【发布时间】:2019-05-23 07:25:53
【问题描述】:
我想让constructor.newInstance(...) 在单元测试中抛出异常。我想检查是否在以下(虚拟)代码中到达了 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");
}
}
但我很好奇我是否可以通过模拟来实现这一点。
【问题讨论】:
-
你可以传递会导致异常的参数,否则,模拟它,这就是模拟的目的
-
仅作记录:考虑返回
Optional<IInterface>以避免返回 null!额外提示:不要使用“匈牙利”表示法,如 java 中的 IInterface。使用有意义的名称,不要让读者负担这些细节(这在 2019 年不应该那么重要)。 -
你为什么用
constructor.newInstance而不是Function<Arg,T>? -
@chrylis:我正在测试别人的代码,这是通过的参数。如何使用
Function<Arg,T>代替构造函数? (arg 没有传递给方法) -
@GhostCat:匈牙利符号很简洁
标签: java exception junit constructor mocking