1

GMock を使用して、既存の Java プロジェクトに単体テストを追加しています。テストする必要があるメソッドが静的メソッドである複数の場所があり、テストしたいメソッド内で追加の静的メソッドを利用します。

クラスを部分的にモックできるようにしたいと思います。テスト用の最初のエントリ ポイント以外のクラスのほぼすべての静的メソッドです。

例えば:

    class StaticClass {

      static void method(String one) {
          method2()
      }

      static void method(String one, String two) {
          ...
      }
    }

2 番目の静的メソッドをモックできることを願っていますが、そうするとすぐに method(String) が MIA になり、テストの実行が期待例外で失敗します。クラスを部分的にモックして、最初のメソッドの機能を維持しながら、2 番目のメソッドの静的アクセスをモックする方法はありますか?

また、metaClass プログラミングを使用してメソッドをモックしようとしましたが、メソッドをクロージャーに等しく設定すると、最初のメソッドが再び MIA になります。オーバーロードされたメソッドでこれを行う方法がわかりません。何か案は?

4

2 に答える 2

0

Gmock では、静的メソッドをモックし、名前に従って期待値を照合します。つまり、1 つのオーバーロードされたメソッドをモックすることはできませんが、別のメソッドをモックすることはできません。

GroovyのMOPも同様です。

于 2012-02-24T00:32:15.313 に答える
0

これには特に GMock は関係しませんが、テスト ファイル内で StaticClass を拡張し、そこでメソッドをオーバーライドすることができます。

于 2012-02-23T23:06:57.963 に答える