我想让constructor.newInstance(...)
在单元测试中引发异常。我想检查以下(dummy-)代码是否达到else-branch:
public <T extends IInterface> instantiate(final Constructor<IInterface> constructor) {
try {
return constructor.newInstance(arg);
} catch (Exception e) {
return null;
}
}
我想提出null
案。我可以使用(Power)Mockito 无来模拟吗?
理论上我可以做到
class TestImplementation implements IInterface {
public TestImplementation(Arg.class) {
throw new InstantiationException("just for your test case");
}
}
但是我很好奇我是否可以通过嘲笑实现这一目标。
答案 0 :(得分:1)
类java.lang.Constructor
是最终的,因此默认情况下很难进行模拟。 Mockito的最新版本支持模拟最后的类,据我所知EasyEock不。
因此,您的选择可能是:
记录在案:传递一些“虚拟”类的Class实例,就像您在问题中所暗示的那样,比使用模拟框架要好。
您必须了解:您不使用嘲笑,因为您可以。您只有在拥有后才能使用它!在您的情况下,有一个简单,直接的非模拟解决方案可以测试您的生产代码。
所以:请使用TestImplementation.class
并在这里忘记使用模拟框架。