【发布时间】:2011-01-12 12:16:31
【问题描述】:
我正在尝试跟上 TDD 的速度,因此我创建了一个新的 S#arp Arch 应用程序 (v1.6),并且一直在为我的类创建测试。不幸的是,我已经遇到了一个尚未解决的问题。
我为“用户”和“记录请求”类创建了一个比较测试。使用 NUnit 执行测试时,“用户”测试通过,而“记录请求”则没有。我试图了解为什么一项测试通过而另一项未通过。错误信息是:
在 e:\WorkSpaces\Git\SharpArchitecture\Trunk\src\SharpArch\SharpArch.Testing.NUnit\SyntaxHelpers.cs:line 25 中的 SharpArch.Testing.NUnit.SyntaxHelpers.ShouldEqual(Object actual, Object expected) 在 Tests.ISPS.Core.Account.RecordRequestTests.CanCompareRecordRequests() 在 D:\Web\Mvc\Projects\Campus Counsel\IRS\ISPS\tests\ISPS.Tests\ISPS.Core\Account\RecordRequestTests.cs:line 23
“用户”类和测试:
using System;
using System.Security.Principal;
using NHibernate.Validator.Constraints;
using SharpArch.Core.DomainModel;
namespace ISPS.Core.Account
{
public class User : Entity, IPrincipal
{
public static User DefaultUser()
{
return new User
{
Role = Role.Administrator,
IsActive = true,
CreatedOn = DateTime.Now
};
}
[DomainSignature]
[NotNullNotEmpty(Message = "Kerberos must be provided.")]
public virtual string Kerberos { get; set; }
[NotNullNotEmpty(Message = "First name must be provided.")]
public virtual string FirstName { get; set; }
[NotNullNotEmpty(Message = "Last name must be provided.")]
public virtual string LastName { get; set; }
[DomainSignature]
[NotNullNotEmpty(Message = "Email must be provided.")]
public virtual string Email { get; set; }
[NotNull(Message = "Role must be provided.")]
public virtual Role Role { get; set; }
public virtual bool IsActive { get; set; }
public virtual DateTime CreatedOn { get; set; }
public virtual DateTime? ModifiedOn { get; set; }
public virtual bool IsAdministrator { get { return Role.Id == Role.AdministratorId; } }
public virtual bool IsEditor { get { return Role.Id == Role.EditorId; } }
public virtual bool IsGuest { get { return Role.Id == Role.GuestId; } }
public virtual IIdentity Identity
{
get
{
var isAuthenticated = (Role.Name == Role.Administrator.Name);
return new Identity(isAuthenticated, Kerberos);
}
}
public virtual bool IsInRole(string role)
{
return Role.Name == role;
}
}
/// <summary>
/// Simple implementation of IIdentity
/// </summary>
public class Identity : IIdentity
{
public Identity(bool isAuthenticated, string name)
{
IsAuthenticated = isAuthenticated;
Name = name;
}
public string AuthenticationType
{
get { return "Forms"; }
}
public bool IsAuthenticated { get; private set; }
public string Name { get; private set; }
}
}
using System;
using NUnit.Framework;
using SharpArch.Testing.NUnit;
using ISPS.Core.Account;
namespace Tests.ISPS.Core.Account
{
[TestFixture]
public class UserTests
{
[Test]
public void CanCompareUsers()
{
var instance = new User
{
Kerberos = "nchomsky",
FirstName = "Noam",
LastName = "Chomsky",
Email = "nchomsky@gmail.edu",
Role = Role.Administrator,
IsActive = true,
CreatedOn = DateTime.Parse("1/1/1975 10:00 AM"),
ModifiedOn = null
};
var instanceToCompareTo = new User
{
Kerberos = "nchomsky",
FirstName = "Noam",
LastName = "Chomsky",
Email = "nchomsky@gmail.edu",
Role = Role.Administrator,
IsActive = true,
CreatedOn = DateTime.Parse("1/1/1975 10:00 AM"),
ModifiedOn = null
};
instance.ShouldEqual(instanceToCompareTo);
}
}
}
'RecordRequest' 类和测试:
using NHibernate.Validator.Constraints;
using SharpArch.Core.DomainModel;
namespace ISPS.Core.Requests
{
public class RecordRequest : Entity
{
public static RecordRequest DefaultRecordRequest()
{
return new RecordRequest();
}
[NotNullNotEmpty(Message = "A description of the documents requested must be provided.")]
public virtual string Description { get; set; }
}
}
using ISPS.Core.Requests;
using NUnit.Framework;
using SharpArch.Testing.NUnit;
namespace Tests.ISPS.Core.Requests
{
[TestFixture]
public class RecordRequestTests
{
[Test]
public void CanCompareRecordRequests()
{
var instance = new RecordRequest
{
Description = "description"
};
var instanceToCompareTo = new RecordRequest
{
Description = "description"
};
instance.ShouldEqual(instanceToCompareTo);
}
}
}
感谢任何帮助!
【问题讨论】:
标签: testing nunit s#arp-architecture