【发布时间】:2020-04-01 17:05:26
【问题描述】:
我整天都在看论坛试图模拟一个类,但没有一个解决方案对我有用,而且我不知道我做错了什么(我是 Java 测试的新手)。
我想测试这个(重命名的)类,主要是每个 if 条件以确保它们工作:
public class MyClass {
public static List<Object> MyClass(@NotNull Session session, @NotNull MyObject updated, @NotNull Mode mode)
throws Exception {
ModeList modes = MyUtil.geModes(mode);
try {
final Transaction tr = updated.getTransaction();
MyObject original;
if(tr == null) {
original = new Foo().getCurrentBar(session, updated.getKey(), null, "en");
} else {
original = new Foo().getOtherBar(session,
updated.getKey(),
tr.getProp1().intValue(),
tr.getProp2().intValue(),
"en");
}
return SomeClass.check(updated, original, modes);
} catch (Exception ex) {
// handle
}
return null;
}
}
请注意,我无法更改此(或 Foo 类)/添加依赖注入,它需要按原样进行测试。我尝试过 mockito、powerMock mock、mockStatic、partial mocks 等,它们都因某种原因而失败,而真正的 getCurrentBar / getOtherBar 被调用。
此时我可能会得到隧道视野,但请告知。
【问题讨论】: