0

このようなクラスがあるとしましょう:

public class MyClass {

   private int var1;
   private int var2;

   public MyClass() {
      var1 = 0;
      var2 = 0;
   }

   public void setVariables() {
      var1 = 1;
      var2 = 1;
   }

クラス内に getter メソッドがありません。

setVariables() のような void メソッドを JUnit でテストする方法はありますか? 変数値に直接アクセスせずにその動作を確認するにはどうすればよいですか?

4

3 に答える 3

3

このメソッドには(外部から)目に見える副作用がないため、おそらくテストしません。

おそらく、これらの変数を設定したという事実は、他のメソッドに副作用をもたらします。ここで、他のメソッドが期待どおりに実行されることをテストできます。

于 2012-07-17T17:36:36.307 に答える
0

あなたの例の setVariables は単純すぎてテストできません。実際のメソッドに目に見える効果 (非公開状態) がある場合は、その状態をテストします。状態が非公開であるが、他のメソッドに影響を与える場合は、このメソッドを他のメソッドと一緒にテストします。setVariables が非常に複雑で、個別にテストする必要があると思われる場合は、テストしてください。ただし、覚えておいてください: この段階では、外部コントラクトではなく、実装をテストしています。実装を変更するときは、テストを変更する必要があります。やりたい場合は、var1 と var2 パッケージを表示することをお勧めします。これはテストに非常に便利です。非公開のままにしておく必要がある場合、唯一の解決策はリフレクションと whiteBox のようなライブラリです

于 2012-07-17T17:51:02.060 に答える
0

リフレクションを使用して変数へのアクセスを取得し、テスト ケースを groovy で記述して、getter メソッドを動的に追加できます。AOP のフレーバー (cglib、aspectJ) を使用して、メソッドが呼び出されることをテストできます....

于 2012-07-17T17:35:52.753 に答える