C# NUnit Assert.AreEqual(LeftObject,RigToObject)
下面的链接表明这应该是可行的C# NUnit Assert.AreEqual(LeftObject,RigToObject),c#,nunit,C#,Nunit,下面的链接表明这应该是可行的 [TestFixture()] 公共类响应消息单元测试 { 私人模拟配置MOQ; 私有模拟ICardReaderMoq; 私人回应信息; 公共响应消息单元测试() { //表演 此._IConfigurationMoq=new Mock(); _IConfigurationMoq.Setup(x=>x.REPEATDELAYTIME)。返回(0); _IConfigurationMoq.Setup(x=>x.color\u整体\u响应\u区域)。返回(true
[TestFixture()]
公共类响应消息单元测试
{
私人模拟配置MOQ;
私有模拟ICardReaderMoq;
私人回应信息;
公共响应消息单元测试()
{
//表演
此._IConfigurationMoq=new Mock();
_IConfigurationMoq.Setup(x=>x.REPEATDELAYTIME)。返回(0);
_IConfigurationMoq.Setup(x=>x.color\u整体\u响应\u区域)。返回(true);
这是。_ICardReaderMoq=new Mock();
this.responseMessage=新的responseMessage(_IConfigurationMoq.Object,_ICardReaderMoq.Object);
}
[测试(说明]=
“调用ResponseMessageDisplayAdditionalInfo\u空方法”+
“使用填充字段的背景色”+
“附加信息行[1-4]和”+
“附加信息编号[1-4]”)
[测试用例(背景色,很好)]
公共无效响应消息显示附加信息为空(字符串背景色)
{
//安排
_IConfigurationMoq.Setup(x=>x.color\u整体\u响应\u区域)。返回(true);
_IConfigurationMoq.Setup(x=>x.REPEATDELAYTIME)。返回(0);
DisplayLine预期=新的DisplayLine(\u IConfigurationMoq.Object,null,null,BackgroundColor);
//表演
responseMessage.DisplayAdditionalInfo_为空(背景色);
//断言
Assert.AreEqual(预期,responseMessage.AdditionalInfoLine1);
//Assert.AreEqual(预期,responseMessage.AdditionalInfoLine2);
//Assert.AreEqual(预期,responseMessage.AdditionalInfoLine3);
//Assert.AreEqual(预期,responseMessage.AdditionalInfoLine4);
//Assert.AreEqual(预期、responseMessage.AdditionalInfoNo1);
//Assert.AreEqual(预期、responseMessage.AdditionalInfoNo2);
//Assert.AreEqual(预期、responseMessage.AdditionalInfoNo3);
//Assert.AreEqual(预期、responseMessage.AdditionalInfoNo4);
}
Message: Expected: <EPIC.APIS.REST.Models.Android.DisplayLine>
But was: <EPIC.APIS.REST.Models.Android.DisplayLine>
消息:应为:
但是:
我不明白为什么…这两个对象属于同一类型,并且包含相同的值
<package id="NUnit" version="3.12.0" targetFramework="net462" />
以及您链接到建议的线程,
Assert.AreEqual
作为引用进行比较,除非您重写它
因此,尽管所有东西看起来都一样,但它们可能是不同的对象/引用
您可以从这个答案中查看
属性值eEquals
:或者像这样比较您的对象,或者覆盖对象的比较您的显示行
类是否覆盖Equals
?不,它没有Equals覆盖。您的链接是遗留文档…它甚至在页面顶部!我编辑了您的问题,以便链接指向当前文档。请尽量避免将您自己和他人与过时的文档混淆-NUnit 2.2.2是从2004年开始的!要获得智能错误消息,您还应覆盖ToString()如果不这样做,则只显示用户定义类型的类名。很好的建议。我所做的是为DisplayLine类创建一个Equals方法。然后,我可以在test.Assert.IsTrue(expected.Equals(responseMessage.AdditionalInfoLine1))中调用此Equals方法;
<package id="NUnit" version="3.12.0" targetFramework="net462" />