哪个集合断言策略与 TestCaseSource 集合 return 值一起使用
Which collection assertion strategy is used with TestCaseSource collection return values
使用 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
代替,并且有效
我可以自定义该行为吗?
该行为不可配置。 fluent Returns
方法的处理方式与 ExpectedResult
相同。 NUnit 只检查相等性。 NUnit code that handles this 相当简单,
if (testMethod.HasExpectedResult)
NUnit.Framework.Assert.AreEqual(testMethod.ExpectedResult, result);
将预期值作为第二个参数传递并使用 CollectionAssert.AreEquivalent
的解决方法是正确的。 NUnit 不会更改 ExpectedResult
的语义以允许您使用任意断言。您可能会看到 AreEqual
和 AreEquivalent
在语义上非常接近,但它们在内部却非常不同。
使用 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
代替,并且有效
我可以自定义该行为吗?
该行为不可配置。 fluent Returns
方法的处理方式与 ExpectedResult
相同。 NUnit 只检查相等性。 NUnit code that handles this 相当简单,
if (testMethod.HasExpectedResult)
NUnit.Framework.Assert.AreEqual(testMethod.ExpectedResult, result);
将预期值作为第二个参数传递并使用 CollectionAssert.AreEquivalent
的解决方法是正确的。 NUnit 不会更改 ExpectedResult
的语义以允许您使用任意断言。您可能会看到 AreEqual
和 AreEquivalent
在语义上非常接近,但它们在内部却非常不同。