每个测试方法是否至少有一个断言?

use*_*348 4 unit-testing

当我测试一个void方法时,没有什么可断言的.比如一个CreateSomething方法.我知道我可以在测试方法中调用FindSomething等其他方法,但无论如何,如果(在create方法中)存在错误,它将显示出来.因此,在每种方法中调用断言都是一个好习惯,或者我有时没有断言就好了?

Rob*_*nik 5

不一定是断言

但是您的测试代码至少应该执行以下操作之一:

  • 断言某些属性/结果已经/未设置为特定值
  • 验证是否已调用/避免某些方法
  • 检查异常是否按预期运行(激发与否)

所以你应该检查它的价值,行动和错误.有时只是其中之一,有时你不能没有组合.

  • 有时,尤其是在C/C++世界中,您的测试可能会检查"代码是否编译".这不是一个笑话 - 所有预处理器宏都应该有一个"MACRONAME_Compiles"测试,它应该是它的第一个测试,传递各种形式的参数(表达式作为参数通常用在这样的测试中). (2认同)