TDD로 속도를 높이려고 노력 중이므로 새 S # arp Arch 애플리케이션 (v1.6)을 만들었고 클래스에 대한 테스트를 작성하고 있습니다. 불행히도 나는 이미 해결해야 할 문제를 이미 실행했습니다.S # arp Arch and TDD
나는 'User'와 'RecordRequest'클래스에 대한 비교 테스트를 만들었습니다. NUnit으로 테스트를 실행할 때 'User'테스트가 통과하는 반면 'RecordRequest'테스트는 통과하지 않습니다. 왜 한 시험이 통과하고 다른 시험은 통과하지 않는지 이해하려고 노력하고 있습니다. 오류 메시지는 다음과 같습니다 SharpArch.Testing.NUnit.SyntaxHelpers.ShouldEqual에서
는 (실제 개체, 개체 예상) 전자에 : \ 작업 공간 \ 힘내 \ SharpArchitecture \ 트렁크 \ SRC \ SharpArch \ SharpArch.Testing.NUnit SyntaxHelpers \. cs : line 25 D : \ Web \ Mvc \ Projects \ Campus Counsel \ IRS \ ISPS \ tests \ ISPS.Tests \ ISPS.Core \ Account \ RecordRequestTests에있는 Tests.ISPS.Core.Account.RecordRequestTests.CanCompareRecordRequests()에 있습니다. CS : 라인 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 = "[email protected]",
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 = "[email protected]",
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);
}
}
}
아무쪼록 감사드립니다.
도움을 주셔서 감사합니다! 더 자세한 설명은 The S # arp Architecture Wiki에서 The S # arp Architecture Class Libraries /DomainModel/Entity.cs에서 찾을 수 있습니다. – Tyler