unit-testing - 了解单元测试约束和 NUnit 语法助手

标签 unit-testing nunit constraints

我和一位同事正在开始一个新项目,并试图充分利用 TDD。我们仍在弄清楚有关单元测试的所有概念,到目前为止,它们主要基于其他示例。

我的同事最近质疑 NUnit 语法助手的意义,我正在努力解释它们的好处(因为我自己并不真正理解它,只是我的直觉说它们很好!)。这是一个示例断言:

Assert.That(product.IsValid(), Is.False);

对我来说这是完全有道理的,我们是说我们期望 product.IsValid() 的值为 false。另一方面,我的同事希望我们简单地写:

Assert.That(!product.IsValid());

他对他说这更有意义,他可以更轻松地阅读它。

到目前为止,我们唯一可以达成一致的是,当前者的测试失败时,您可能会得到更有帮助的输出,但我认为必须有更好的解释。我查阅了一些关于语法帮助程序 ( http://nunit.com/blogs/?p=44 ) 的信息,它们很有道理,但我并不完全理解约束的概念,只是它们“感觉”正确。

我想知道是否有人可以解释为什么我们使用约束的概念,以及为什么他们改进上面的单元测试示例?

谢谢。

最佳答案

我认为这主要与声明的纯英文阅读有关。

第一次阅读

Assert that product is valid is false

二读

Assert that not product is valid

我个人觉得第一个更容易处理。我认为这完全取决于偏好。尽管有一些扩展方法很有趣,但它们可以让您像这样进行断言:

product.IsValid().IsFalse();

关于unit-testing - 了解单元测试约束和 NUnit 语法助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/610001/

相关文章:

java - JUnit "fail"方法未打印到控制台

c# - 如何在使用 VSTS(单元测试适配器)运行测试时生成 NUnit XML 报告

c# - Moq - 异步方法的设置。错误

ios - xamarin Ios 将 UIView 添加到 ContainerView

ScalaTest - 根据输入/预期输出创建动态测试 (forAll)

android - Android MVP 中的 Firebase 远程配置单元测试?

java - 如何在不使用 "add"等的情况下在 DAO 中测试 "find"?

c# - 使用事件和委托(delegate)对类进行单元测试

xcode - 不能与 Xcode 11 中的 Superview 高度相等

Neo4j 2.0 唯一约束错误 "node already exists"当它不