0

私はテストのソフトウェアエンジニアであり、テストが代わりにそれらを実行できるように、本番側のメソッドを置き換えることができるコードを書き込もうとしています。基本的に、テスト容易性のために製品コードを変更したくありません。

簡単なシナリオは次のとおりです。

public class Foo {

     public static void foo() {
         printA();
     }

     public static void printA() {
         System.out.println("A");
     }

     public static void printB() {
         System.out.println("B");
     }
}

public class Foobar {

    public Foobar() {

    }

    public void test() {
        Foo.foo();
    }

    public static void main(String[] args) {
        //Try changing the method here

        new Foobar().test();
    }

}

ご覧のとおり、メインが実行されると、静的メソッドfoo()でメソッドprintAが呼び出されるため、「A」が出力されます。実行時に、fooがprintAではなくprintBを呼び出すように注入または変更する方法はありますか?

助けてくれてありがとう!

4

3 に答える 3

1

AspectJを見てください。

を提供します。これは、元のメソッドの呼び出しを完全にバイパスしたり、任意の値を返したりするなど、メソッドの周囲で(実行の前後advicesに)コードを実行するために使用できます。

于 2013-02-15T22:04:05.150 に答える
0

クラスをテストするためだけにこれを行う場合は、モックフレームワークを使用してサーバー上のクラスをモックすることができます。Mockitoが好きです。

于 2013-02-15T22:03:11.763 に答える
0

JavaリフレクションAPIを使用して自分で行うことも、 PowerMockなどのツールを使用することもできます。

于 2013-02-15T22:03:24.363 に答える