哪个集合断言策略与 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 的语义以允许您使用任意断言。您可能会看到 AreEqualAreEquivalent 在语义上非常接近,但它们在内部却非常不同。