使用nUnit 3.4.1。
使用TestCaseSource
新建TestCaseData
项目列表时:
new TestCaseData(new [] {"value1", "value2"}).Returns(new [] {"value2", "value1"})
在我的单元测试中,返回一个看起来像输入数据的数组:
new [] {"value1", "value2"}
对于上面显示的Returns
值,我得到一个失败的测试,因为我假设nUnit正在使用CollectionAssert.AreEqual
,这意味着相同的顺序。
尝试使用TestCaseData
初始化中的额外参数和CollectionAssert.AreEquivalent
代替,并且有效
我可以自定义该行为吗?
答案 0 :(得分:1)
行为不可配置。流畅的Returns
方法与ExpectedResult
的处理方式相同。 NUnit仅检查是否相等。 NUnit code that handles this非常简单,
if (testMethod.HasExpectedResult)
NUnit.Framework.Assert.AreEqual(testMethod.ExpectedResult, result);
将期望值作为第二个参数传递并使用CollectionAssert.AreEquivalent
的解决方法是正确的。 NUnit不会更改ExpectedResult
的语义,以允许您使用任意断言。您可能会看到AreEqual
和AreEquivalent
在语义上非常接近,但它们在内部非常不同。