【发布时间】:2014-07-03 18:03:35
【问题描述】:
我有一个非常简单的类,它有一个私有方法。问题是如何抑制这个方法调用?
这是我的代码:
public class Example {
private int value;
public Example(int value) {
this.value = value;
method();
}
private void method() {
throw new RuntimeException();
}
public int getValue() {
return value;
}
}
和测试代码(至少尝试):
public void test() throws Exception {
PowerMockito.doNothing().when(Example.class, "method");
final int EXPECTED_VALUE = 1;
Example example = new Example(EXPECTED_VALUE);
int RETRIEVED_VALUE = example.getValue();
assertEquals(RETRIEVED_VALUE, EXPECTED_VALUE);
verifyPrivate(Example.class, times(1)).invoke("method");
}
UPD
对我来说,遵守这两个条款很重要:
PowerMockito.doNothing().when(Example.class, "method");PowerMockito.verifyPrivate(Example.class, times(1)).invoke("method");
【问题讨论】:
-
你到底为什么要抛出一个新的异常?我不明白。
-
//method();应该可以解决问题 -
这只是真实课堂的一个例子。
-
@Aaron 你可以做什么和不可以做什么?
-
好的,我想他是在问如何模拟
method,以便不调用它的实际实现。这是一个“我如何编写这个单元测试?”问题。
标签: java unit-testing mocking powermock