【发布时间】:2019-06-19 05:31:06
【问题描述】:
我想测试一个调用多个私有方法的公共方法。我从以前提出的问题的所有答案中读到的内容各不相同。有人说如果遇到这种情况,可能是结构不对,或者调用其他方法没有任何逻辑的方法不应该测试等等。
我不清楚的是,我应该模拟这些私有方法(使用 PowerMock 或任何基于反射的库)并对这个方法进行单元测试,还是应该提供不同类型的输入,以便所有情况都测试,但私有方法也会被调用。在后一种情况下,是否仍然是单元测试,因为我也会调用其他方法。
class ClassToTest {
public void publicMethod (Argument argument) {
try {
privateMethod1();
privateMethod2(argument);
privateMethod3();
} catch (Exception ex) {
privateMethod4();
}
}
}
【问题讨论】:
-
后者。甚至不要尝试模拟私有方法。是的,它仍然是单元测试。
-
一个问题,大多数人说在单元测试中使用反射的私有方法模拟/调用是一个糟糕的主意。通过反射设置私有字段值怎么样?还是“不能接受”吗?
标签: java unit-testing junit