Junit Test a getter

1870 ワード

質問:
オブジェクトのgetメソッドをどのようにテストしますか?どのようにテストが必要なのか、どのように不要なのかを判断しますか?
シナリオ:
JUnitテストの新兵にとってもプログラムテストの新兵です.彼らが一番知りたいのは何がテストするのか、何がテストする必要がないのか.一般的に最も簡単なテストから始めるのは良い選択です.しかし、新兵だからこそ多くのテストを書くことができます.テストが退屈だと思ってテンションが下がる.在者のこのようなテストは実際には効果的にあまりよくありません.テスト担当者はできるだけ作成することに注意してほしい.
有効なテストケース.
原則:
第1の原則:getメソッドが単純にドメイン内の値を返すだけであれば、テストプログラムを書くことを考慮する必要はありません.しかし、この方法がより複雑な操作をしている場合は、テストを考えてみましょう.テストプログラムを書くと決めたら、getメソッドに戻り値があるので、期待値と実際の戻り値を直接比較することができます.たとえば

public class SongTest extends TestCase{
  Song song = new Song("Bicyclops","Fleck", 260);
  assertEquals(4.333333d, song.getDurationInMinutes(),0.000001d);
   }

public class Song{
   private  String name;
   private  String artistName;
   private  int duration;

 public Song(String name, String artistName, int duration){
   this.name = name;
   this.artistName = Name;
   this.duration = duration;
  } 

 public double getDurationInMinutes(){
   return (double)duration / 60.0d;
  }
   }

または

 public class Song{
   private  String name;
   private  String artistName;
   private  int duration;
   private  double durationInSeconds

 public Song(String name, String artistName, int duration){
   this.name = name;
   this.artistName = Name;
   this.duration = duration;
   this.durationInSeconds = (double) duration / 60.0d;
  } 

 public double getDurationInMinutes(){
   return durationInSeconds;
    }
   }

第2の実行方法は,将来の使用に備えて構造関数でフォーマット変換を行う.これは効率最適化の戦略です.しかし、この場合、構造関数が正しい演算を行ったかどうかを検証しているので、このテストを行うべきです.このときテストプログラムはgetメソッドが正しいと考えている.構造関数をテストするために使用します.