.net - NUnit 中是否存在 Has-Only-One 约束?

标签 .net unit-testing nunit

我发现自己最近需要很多这种逻辑:

Assert.That(collection.Items, Has.Member(expected_item));
Assert.That(collection.Items.Count(), Is.EqualTo(1));

我看到 NUnit 提供 Has.SomeHas.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/

相关文章:

c# - 在不访问外部文件的情况下在 WebBrowser 控件中显示图像

c# - 如果在 'Passed' 阶段失败,为什么测试标记为 "pre-test"?

c# - 删除foreach中的对象

.net - Docfx,如何让它正确渲染重音字符?

c# - Visual Studio 中的 TestContext - 它有什么作用?

angular - 如何修复 beforeEachProviders(在 RC4 上已弃用)

c# - 在 C# 中模拟系统环境变量

c# - NUnit 测试用例预期消息

c# - 为什么某些 C# lambda 表达式会编译为静态方法?

c++ - 如何为 C++ 项目编写测试(不使用框架)