たとえば、テストのためにスーパーメソッド(「super.start()」)をスキップすることは可能ですか:
public void start() {
super.start();
//other methods which I really want to test
}
編集:言及するのを忘れました-元のコードを変更したくありません。
可能のように感じます。例を確認してください。
@RunWith(PowerMockRunner.class)
@PrepareForTest(Example.B.class)
public class Example {
@Test
public void testSuppressMethod() throws Exception {
suppress(method(A.class, "doA"));
new B().doA();
}
static class A {
void doA() {
System.out.println("a");
}
}
static class B extends A {
@Override
void doA() {
super.doA();
System.out.println("b");
}
}
}
必要なのは、suppress ステートメントで親クラスを指定することだけです。PowerMock 1.5.1 を使用。