【发布时间】:2017-03-09 19:21:13
【问题描述】:
我有一个调用另一个静态方法 (bar) 的静态方法 (foo)。我想在我的测试中模拟 bar 的响应。这可以使用 PowerMockito 或其他工具吗?我能找到的唯一结果是在非静态方法中模拟静态。
public class SomeClass {
static List<String> foo() {
...
int barResult = bar();
...
}
static int bar() {
// make a database call
return DAO.getDao().runQuery();
}
}
我的测试会这样称呼它:
@RunWith(PowerMockRunner.class)
public class SomeClassTest {
@PrepareForTest(SomeClass.class)
@Test
public void fooTest() {
List<String> actualResult = SomeClass.foo();
assertTrue(...);
}
}
我将不得不模拟 bar 的内部结构吗?所以嘲笑 DAO?
【问题讨论】:
-
你不应该在没有充分理由的情况下使用静态方法。由于访问其他类中的静态方法而难以测试的代码也出于同样的原因难以重用。
-
感谢您的接受 :-)
标签: java unit-testing powermockito