我知道这是主观的,但我想遵循最常见的做法。
您通常为每个类方法创建一个测试方法并用多个断言填充它,还是为每个断言创建一个测试方法?

例如,如果我正在测试银行账户的 withdraw方法,我想确保如果用户尝试 overdraw 帐户或提取负数时抛出异常,我应该创建 testOverdawtestNegativeWithdrawal ,或者我只是将这两个断言组合在一个名为 testWithdraw 的方法中?

请您参考如下方法:

可以这样想:每个测试都应该独立运行,并使用一组相对离散的功能。如果您想断言关于您创建的某个方法的三件事是否正确,那么您应该创建一个包含这三件事的测试。

因此,我不得不强烈反对其他已经回答的人。任意将自己限制在每个测试的一个断言中对您没有任何帮助,只会让您的测试变得笨拙和乏味。最终它可能会让你完全放弃测试——这当然是一种耻辱:对你的项目和职业生涯不利。

现在,这并不意味着您有权编写大型、笨拙或多用途的测试例程。事实上,我认为我从来没有写过超过 20 行左右的文字。

至于在一个函数中有多个断言时知道哪个断言失败,您会注意到 nUnit 和 MSTest 都会在断言失败时为您提供描述和链接,这将使您直接进入违规行(nUnit 将需要集成工具,例如 TestDriven.net )。这使得找出故障点变得微不足道。两者都将在函数中的第一次失败时停止,并且都使您能够进行调试演练。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!