我发现自己最近需要很多这种逻辑:
Assert.That(collection.Items, Has.Member(expected_item));
Assert.That(collection.Items.Count(), Is.EqualTo(1));
我看到 NUnit 提供
Has.Some
和 Has.All
,但我没有看到类似 Has.One
的内容.在没有两个断言的情况下实现这一目标的最佳方法是什么?
最佳答案
你可以尝试这样的事情:
Assert.AreEqual(collection.Items.Single(), expected_item);
Single 将返回集合中唯一的项目,或者如果它不包含正好 1 个项目则抛出异常。
不过我对 NUnit 不太熟悉,所以有人可能会提供一个更好的解决方案,它确实使用了 NUnit 函数......
编辑:快速搜索后,似乎接近的唯一 NUnit 函数是
Is.EquivalentTo(IEnumerable)
:Assert.That(collection.Items, Is.EquivalentTo(new List<object>() {expected_item}));
IMO 第一个选项对我来说读起来更好,但后者可能会根据您的喜好提供更好的异常消息。
关于.net - NUnit 中是否存在 Has-Only-One 约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3814685/