在写单元测试的时候,有没有一种简单的方法可以保证没有意外发生?
由于可能的副作用列表是无限的,添加大量断言以确保在每个步骤中没有任何更改似乎是徒劳的,并且混淆了测试的目的。
我可能错过了一些框架功能或良好实践。
我正在使用 C#7、.net 4.6、MSTest V1。
编辑: 更简单的例子是测试 View 模型的 setter ,应该发生两件事:值应该改变并且应该引发 PropertyChanged 事件。 这两件事很容易检查,但现在我需要确保其他属性值没有改变,没有引发其他事件,没有触及系统剪贴板...
最佳答案
您错过了单元测试的要点。它们是“证据”。您无法从逻辑上证明否定的断言,因此即使尝试也没有意义。
每个单元测试中的断言应该证明期望的行为已经完成。就这样。
如果我们将问题简化为荒谬,每个单元测试都需要我们断言被测函数没有引发热核 war 。
单元测试不是您需要执行的唯一一种测试。有功能测试、集成测试、可用性测试等,各有侧重。对于单元测试,重点是证明单个功能的预期行为。因此,如果该函数应该完成两件事,只需断言这两件事都发生了,然后继续。
关于c# - 在编写单元测试时断言 "nothing happened",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48588310/