1

たとえば、テストのためにスーパーメソッド(「super.start()」)をスキップすることは可能ですか:

public void start() {
   super.start();
   //other methods which I really want to test
}

編集:言及するのを忘れました-元のコードを変更したくありません。

4

2 に答える 2

0

可能のように感じます。例を確認してください。

@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 を使用。

于 2013-10-18T09:35:59.013 に答える