请注意:我不是在征求您的意见.我问的是约定.
我只是想知道我是否应该兼得通过和未通过适当的方法名称,如测试,Should_Fail_When_UsageQuantityIsNegative(),Should_Fail_When_UsageQuantityMoreThan50(),Should_Pass_When_UsageQuantityIs50().
或者,我应该编码它们来传递并保持所有测试处于通过状态吗?
Dan*_*iel 12
当你创建单元测试时,它们都应该通过.这并不意味着你不应该测试"失败"的情况.它只是意味着测试应该在"失败"时通过.
这样,您不必经历(最好)大量测试并手动检查正确的测试是否通过和失败.这几乎违背了自动化的目的.
正如Mark Rotteveel在评论中指出的那样,仅仅测试一些失败的东西并不总是足够的.确保故障是正确的故障.例如,如果您使用错误代码并且error_code等于0表示成功并且您想确保存在失败,请不要测试error_code != 0; 相反,测试的例子,error_code == 19或任何正确失败的错误代码是.
编辑
还有一点我想补充一点.虽然您部署的代码的最终版本不应该有失败的测试,但确保编写正确代码的最佳方法是在编写其余代码之前编写测试.在对源代码进行任何更改之前,编写一个单元测试(或理想情况下,一些单元测试),现在应该失败(或无法编译),但在完成更改后通过.这确保了一个很好的方式测试你写测试的正确的事情.因此,总而言之,您的最终产品不应该有失败的单元测试; 但是,软件开发过程应包括您已编写尚未通过的单元测试的期间.
除非你的程序以不应该的方式运行,否则你不应该有失败的测试.
如果程序的预期行为是失败的,并且失败了,那么应该触发测试通过.
如果程序在一个应该失败的地方通过,则对该部分代码的测试将失败.
总之,除非所有测试都通过,否则程序无法正常工作.