【发布时间】:2011-05-27 21:25:28
【问题描述】:
单元测试:
我有以下课程
public class BImpl extends AImpl
{
public BImpl(final C c)
{
super(c);
}
public String getInfo()
{
final String info = getInformation();
// Do all my logic here
return info;
}
}
public abstract class AImpl
{
public String getInformation()
{
// some logic...returns String.
}
}
我正在尝试使用任何可用的 Mockito 或 JMock 模拟方法对方法 getInfo() 进行单元测试。
例如,当我使用 Mockito 时,我就是这样使用的:
final AImpl aImpl = mock(AImpl.class);
when(aImpl.getInformation()).thenReturn("ABC");
现在因为我必须创建一个 BImpl 的实例,所以我可以创建的唯一方法是使用可用的构造函数。
final BImpl bImpl = new BImpl (C);
bImpl.getInfo();
当它调用 getInfo() 方法并尝试调用 getInformation() 时,它不是调用模拟对象,而是调用实际对象。
什么是测试这种方法的好方法。 有没有其他方法可以创建 BImpl 的实例而无需通过我上面给出的构造函数?
谢谢!!
【问题讨论】:
-
恐怕你的代码有好几层错误,很难给出实际的答案。它与 C 的用途有关。现在,代码无法编译,因为 AImpl 没有采用 C 的构造函数。
-
我没有提到完整的 AImpl 类。但是 AImpl 类确实有需要的构造函数。
标签: unit-testing mockito jmock