对于测试/单元,以及最小的测试,是否有可能失败任何不包含断言的测试,或者是否需要进行猴子修补(例如,检查每个测试执行后断言计数是否增加)?
背景:我不应该写没有断言的单元测试 --至少,如果我在进行吸烟测试,我应该使用assert_nothing_raised来表示我正在进行吸烟测试。
通常,我编写的测试首先失败,但我正在编写一些回归测试。或者,我可以提供一个不正确的期望值,看看测试是否在比较期望值和实际值。
发布于 2012-06-20 12:07:06
为了确保单元测试实际验证任何东西,使用了一种称为突变测试的技术。
对于Ruby,您可以查看突变体。
发布于 2010-06-11 09:12:25
正如PK的链接所指出的,断言的存在本身并不意味着单元测试是有意义和正确的。我相信,没有人能自动取代仔细的思考和意识。
首先确保考试不及格是一种很好的做法,应该养成一种习惯。
除了您提到的内容之外,我经常在新测试中设置错误的断言值,以检查测试是否真的运行并失败。(当然,我修复了它:-)这比编辑生产代码要简单得多。
发布于 2010-06-11 16:59:41
我并不认为在没有断言的情况下强迫测试失败是真的有帮助的。在测试中拥有断言本身并不是一个目标--目标是编写有用的测试。
缺少的断言只是表明测试可能没有用。有趣的问题是:如果有什么东西坏了,考试会失败吗?如果没有,那显然是没用的。
如果您要测试的只是代码没有崩溃,那么assert_nothing_raised只是一种注释。但是,“没有爆炸”的测试可能表明测试本身是一个薄弱的测试。在大多数情况下,它不会为您提供有关代码的任何有用信息(因为"no crash !=更正“),那么您为什么要首先编写测试呢?另外,我更喜欢正确爆炸的方法,而不是返回错误结果的方法。
我发现最好的回归测试来自于这个领域:砰你的应用程序(或者让你的测试人员去做),对于你发现的每一个问题,写一个失败的测试。修好它,并通过测试。
否则,我会测试行为,而不是没有崩溃。在我有“空”测试的情况下(这意味着我还没有编写测试代码),我通常会在里面放一个#flunk来提醒我。
https://stackoverflow.com/questions/3019875
复制相似问题