1

powermock でコンストラクターを単体テストし、コンストラクターが呼び出すメソッドをモックできる方法を知っている人はいますか。

つまり、このようなクラスがあります。

public class myClass {
    public myClass(){
        myMethod();
        // do other stuff
    }
    public void myMethod(){
        // do stuff
    }
}

myClass()私がやりたいのは、コンストラクターをモックする単体テストを作成することmyMethod()です。

これは、コンストラクターを呼び出すことができるのでmyMethod()静的であれば簡単です。mockStaticPartial()

MyClass の部分モックを作成するだけでは機能しません。作成したモックを作成すると、その時点でコンストラクターを呼び出すと、モックされずに MyClass の新しいインスタンスが作成されるだけmyMethod()です。

何か方法を知っている人はいますか?

4

1 に答える 1

2

テスト中のクラスをモックしないでください。コンストラクターがメソッドを呼び出す場合、コンストラクターのテストの一部としてメソッドのアクションをテストする必要があります。メソッドが単体テストの範囲外の処理を行う場合は、そのメソッドが「処理」を行うために使用しているクラスをモックします。

上記のもので本当にやりたい場合は(これはお勧めしません)、メソッドをオーバーライドするテスト対象のクラスのサブクラスを作成できます。(これは、上記のジョンカールの優れたコメントに反します)。

于 2012-09-13T15:37:37.277 に答える