10

先生は私たちに総合的な単体テストをしてほしいと言いました。私にとって、JUnit を使用するのはこれが初めてです。set メソッドと get メソッドのテストについて混乱しています。それらをテストする必要があると思いますか? 答えが「はい」の場合。このコードはテストに十分ですか?

  public void testSetandGet(){
    int a = 10;
    Class firstClass = new Class();
    firstClass.setValue(10);
    int value = firstClass.getValue();
    Assert.assertTrue("Error", value==a);
  }

私のコードでは、エラーが発生した場合、エラーがセッターまたはゲッターのために派生していることを知ることができないと思います。

4

6 に答える 6

19

セッターとゲッターにプログラム ロジック (セッターまたはゲッターが呼び出されたときに計算されるもの) が含まれていない限り、セッターとゲッターの単体テストを作成しないでください。

実際のプロジェクトでは、セッターやゲッターなどの些細なことをテストしなくても、単体テストを行うためのプログラム ロジックがたくさんあります。

于 2013-05-28T17:10:04.683 に答える
5

Roy Osherove は有名な著書「The Art Of Unit Testing」で次のように述べています。

プロパティ (Java のゲッター/セッター) は、通常ロジックを含まず、テストを必要としないコードの良い例です。ただし、注意してください。プロパティ内にチェックを追加したら、ロジックがテストされていることを確認する必要があります。

設定した内容をテストしています。「取得」することもできます。Assertステートメントを次のように変更します。

Assert.assertTrue(a, true);

また、a使用する場合は を渡す必要があります。

于 2013-05-28T17:08:57.090 に答える
2

私があなたなら、まずsetテストしているクラスのプロパティに何らかの値を設定し、次にgetメソッドが同じ値を返すことを確認します。

public void testSetandGet(){
    int a = 10;
    Class firstClass = new Class();
    firstClass.setValue(10);
    int value = firstClass.getValue();
    Assert.assertEquals(value, a);
}
于 2013-05-28T17:08:26.573 に答える
1

テスト対象のクラス以外のものに依存して動作するものは、単体テストしないでください。

ゲッターとセッターが些細な場合、基礎となる JVM/コンパイラが失敗した場合にのみ失敗する可能性があるため、コードではなく JVM/コンパイラを実際にテストしています。

于 2013-05-28T17:10:42.380 に答える