我想测试以下逻辑(这显然是我的方法的精简版本):
public void myPublicMethod(params) {
if(some_condition)
privateMethod1();
else
privateMethod2();
}
我模拟了该方法中的所有其他依赖项,并且进行了设置,以便我可以保证 some_condition 为 true。我想要做的是验证我的 privateMethod1() 是否被调用一次,而 privateMethod2() 根本没有被调用。这可能与起订量有关吗?
以下是有关该问题的一些注释:
- privateMethod1() 和 privateMethod2() 与 myPublicMethod 位于同一类中,因此我无法为此类创建模拟对象。
- privateMethod1/2 的主体都包含来自包含这些和 myPublicMethod 的类的许多依赖项,因此将 privateMethod1/2 分解为它们自己的帮助程序类将非常耗时
有什么想法吗?提前致谢。我愿意接受这是不可能的,但我想知道一种或另一种方式。
不要测试私有方法。它们是类的私有实现细节。您应该只测试执行公共方法的结果。只要你的结果符合预期,你就不应该关心结果是如何获得的。
在私有方法上构建测试将导致脆弱的测试,当您重构私有实现时(出于性能或其他原因),这些测试很容易被破坏。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)