为什么NUnit没有IsElementOf/IsOneOf约束?

Lam*_*eek 5 collections dsl nunit unit-testing

我没有直接与NUnit合作,但我希望在不同的背景下借鉴它的一些想法.

一个特别优雅的想法是约束机制,它允许您编写表单的单元测试:

Assert.That(aValue, Is.GreaterThan(2.0) & Is.LessThan(5.0));
Run Code Online (Sandbox Code Playgroud)

您还可以测试某个值在某个范围内:

Assert.That(aValue, Is.InRange(2.0, 5.0));
Run Code Online (Sandbox Code Playgroud)

但是,似乎没有办法测试它aValue是允许值的集合之一:

Assert.That(aValue, Is.OneOf(aCollection));
Run Code Online (Sandbox Code Playgroud)

在单元测试中它不常见吗?它是否表明我的单元测试存在一些问题?每个人都只是将aValue注入一个虚拟的一个元素集合然后使用Is.SubsetOf吗?

Sve*_*ckx 1

当前版本的 NUnit (3.13) 有一个本机方法:Is.AnyOf(params object[] expected)

你可以这样使用它:

Assert.That(result, Is.AnyOf("red", "green", "blue"));
Assert.That(result, Is.Not.AnyOf("black", "white"));
Run Code Online (Sandbox Code Playgroud)