11

別のクラスの静的データを参照するクラスを単体テストしようとしています。この静的クラスを「使用しない」ことはできませんが、明らかに複数のテストを実行すると問題が発生します。だから私の質問はこれです。junit テストで静的クラスを再初期化する方法はありますか? そうすれば、あるテストは前のテストの影響を受けませんか?

言い換えれば、これを行ういくつかの方法:

Foo.setBar("Hello");

// Somehow reinitialize Foo

String bar = Foo.getBar(); // Gets default value of bar rather than "Hello"

残念ながら、私は Foo を変更できないので、それを使い続けています。

編集私の例を少し単純にしすぎたようです。実際のコードでは、「バー」はシステム プロパティによって設定され、内部静的変数に設定されます。そのため、実行を開始すると、変更できません。

4

7 に答える 7

4

PowerMock を使用する場合は、静的メソッドをモックできます。これを行う必要があります。

于 2013-10-10T17:46:19.317 に答える
2

PowerMock (Mockito を使用) または JMockit を使用して静的クラスをモックし、各テストで必要なことを実行させることができます。

于 2013-10-10T17:47:42.890 に答える