【问题标题】:S#arp Arch and TDDS#arp Arch 和 TDD
【发布时间】: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


    【解决方案1】:

    尝试在 Description 属性上添加 [DomainSignature] 属性。

    【讨论】:

    • 感谢您的帮助!更详细的解释可以在 The S#arp Architecture Wiki 的 The S#arp Architecture Class Libraries /DomainModel/Entity.cs 下找到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多