【发布时间】:2013-11-27 21:04:46
【问题描述】:
我有以下课程:
public class LegacyClass()
{
public LegacyClass(final int aModeOfOperation)
{
if (aModeOfOperation == 0)
{
addSomeValues();
addSomeValues();
}
else if (aModeOfOperation == 1)
{
addSomeValues();
}
}
private void addSomeValues()
{
}
}
我想写一个单元测试来检查
- 调用
LegacyClass(0)导致私有方法addSomeValues被调用2 次并且 - 调用
LegacyClass(1)导致私有方法addSomeValues被调用一次。
我知道可以在 Mockito/PowerMockito 中使用 spy 对象来计算私有方法调用的次数,但是 AFAIK 这些方法仅在相关方法被调用之后被测试的类。
是否可以在不改变LegacyClass的构造函数的情况下编写上述单元测试?
【问题讨论】:
-
如果您正在测试私有方法,那么您通常会测试错误的东西。你能测试一下
addSomeValues()被调用两次时会发生什么的结果吗?黑盒测试 > 白盒测试,甚至在类级别。 -
@vikingsteve 测试结果是我现在使用的解决方案,因为我找不到更好的解决方案。
-
太好了,我认为您实际上找到了更好的解决方案。如果有人重构了
LegacyClass,那么你的测试应该仍然是绿色的!
标签: java unit-testing mocking mockito powermock