如果我是单元测试方法A并且我在我的测试中使用了许多其他方法(或属性获取器)来检查它的行为(在这种情况下我没有使用模拟),那么相信它是一种好习惯吗那些其他方法是否正常工作,并假设如果不这样做,它们会在这些方法的测试中被捕获?
答案 0 :(得分:2)
简而言之,是的。
单元测试的本质是你要验证一些原子“单元”代码在一系列已知情况下产生正确的结果。试验应该像在真空中一样进行;应该欺骗您的单位所依赖的任何代码(通常通过模拟)以产生预期的输入。这些依赖项还应该有自己的单元测试,以验证它们是否会在相同的情况下为其家属产生那些预期的输入。
答案 1 :(得分:1)
是的,您应该只测试一个方法/单位。例如,TestNG鼓励您通过允许定义测试依赖性来做出这样的假设。如果您测试依赖于方法foo()
的方法bar()
,请使您的测试依赖于测试bar()
的方法。如果bar()
测试失败,则foo()
的测试甚至不会运行。
此假设的缺点(当您无法定义测试依赖项时)是当bar()
方法被破坏时,foo()
和bar()
的测试都将失败,使找到问题的根本原因变得更加困难。
答案 2 :(得分:0)
如果你真的不信任其他方法,那么你应该为这些方法编写单元测试。即使糟糕的方法导致您的单元测试失败,它也将无法通过自己的单元测试,这将导致程序员修复正确的错误。