junitの基礎知識

2863 ワード

一、必要なPackageを含む
テストクラスではJUnit 4フレームワークが用いられており,それに応じてPackageが含まれるのは当然である.最も重要なPackageはorgです.junit.*.それを含めると、ほとんどの機能があります.もう一つ重要な言葉は「import static org.junit.Assert.*;」です.私たちがテストするときに使用した一連のassertEqualsメソッドはこのパッケージから来ています.これは静的包含(static)であり、JDK 5に新たに追加された機能であることに注意してください.すなわち、assertEqualsはAssertクラスの一連の静的方法であり、一般的な使用方法はAssertである.assertEquals()ですが、静的に含むと、前のクラス名は省略でき、使い勝手がよくなります.
二、テストクラスの声明
私たちのテストクラスは独立したクラスであり、親クラスはありません.テストクラスの名前は任意に命名することもでき、制限はありません.したがって、クラスの宣言によってテストクラスであるかどうかを判断することはできません.通常のクラスとの違いは、その内部のメソッドの宣言にあります.次に説明します.
三、テスト対象のオブジェクトを作成する
どのクラスをテストするかは、まずクラスのオブジェクトを作成します.前の記事のコードのように
  private static Calculator calculator =newCalculator();
Calculatorクラスをテストするには、calculatorオブジェクトを作成する必要があります.
四、試験方法の声明
テストクラスでは、各メソッドがテストに使用されるわけではありません.「寸法」を使用して、テストメソッドを明確にする必要があります.「寸法」もJDK 5の新しい特性であり、ここでは適切に使用されます.いくつかの方法の前に@Before,@Test,@Ignoreなどの文字が表示されており,これらは「@」で始まる.これらのマークアップはすべてJUnit 4がカスタマイズしたもので、これらのマークアップの意味を熟知することが重要です.
五、簡単なテスト方法を書く
まず、メソッドの前に@Testタグを使用して、これがテストメソッドであることを示します.メソッドの宣言には、名前は任意に取得でき、制限はありませんが、戻り値はvoidでなければなりません.パラメータはありません.これらの規定に違反すると、実行時に異常が放出されます.方法内に何を書くべきかは、何をテストする必要があるかによって決まります.例:
  
@Test

  public voidtestAdd() ...{

  calculator.add(2);

  calculator.add(3);

  assertEquals(5, calculator.getResult());

  }

 
「加算」機能をテストするときに正しいと思います.テスト方法でadd関数を何回か呼び出します.初期値は0で、2を追加し、3を追加します.私たちが期待している結果は5です.最終的な実際の結果も5である場合、addメソッドが正しいことを示し、逆にそれが間違っていることを示す.assertEquals(5, calculator.getResult());すなわち,期待結果と実結果が等しいか否かを判断し,1番目のパラメータに期待結果,2番目のパラメータに実結果,すなわち計算により得られた結果を記入する.このように書くと、JUnitは自動的にテストを行い、テスト結果をユーザーにフィードバックします.
六、テストの未完成の方法を無視する
プログラムを書く前に良い計画を立てたら、どんな方法がどんな機能なのかを実現しなければなりません.したがって、この方法がまだ完了していない場合でも、彼の具体的な機能は確定されています.これは、彼のためにテスト例を書くことができることを意味します.しかし、この方法のテスト例を書き終えたが、まだ完成していない場合は、テスト時に必ず「失敗」します.このような失敗と実際の失敗には違いがあるので、JUnitは彼らを区別する方法を提供しました.それは、このテスト関数の前に@Ignoreタグを付けることです.このタグの意味は「一部の方法はまだ完成していないので、今回のテストに参加しない」ということです.これにより、テスト結果は失敗ではなく、いくつかのテストが無視されていることを示します.対応する関数が完了したら、@Ignoreの寸法を削除するだけで、正常なテストができます.
七、Fixture(ひとまず「固定コードセグメント」と訳す)
Fixtureの意味は「ある段階で必ず呼び出されるコード」です.例えば、私たちの上のテストでは、Calculatorオブジェクトが1つしか宣言されていないため、彼の初期値は0ですが、加算操作をテストした後、彼の値は0ではありません.次に減算操作をテストするには,必ず前回の加算操作の結果を考慮しなければならない.これは絶対に悪いデザインです!各試験が独立し,相互間に結合度がないことを非常に望んでいる.したがって,各テストを実行する前にCalculatorオブジェクトに対して「復元」操作を行い,他のテストによる影響を除去する必要がある.したがって、前述の例のように、「いずれかのテストが実行される前に実行しなければならないコード」はFixtureであり、@Beforeで表記します.


  @Before

  public void setUp() throws Exception ...{

  calculator.clear();

  }


ここでは@Testタグは必要ありません.これはtestではなくFixtureです.同様に、「任意のテスト実行後に行う必要がある終了作業」もFixtureの場合、@Afterを使用して寸法を付けます.この例は比較的簡単なため、この機能は使用されません.
http://tech.sina.com.cn/s/2010-01-18/14081218926.shtml