開発からテストまで

3441 ワード

JUnitの概要


JUnitはJava言語のユニットテストフレームワークです.Kent BeckとErich Gammaによって構築された回帰試験フレームワーク(regression testing framework).Junitテストはプログラマーテスト、いわゆるホワイトボックステストです.プログラマーはテストされたソフトウェアがどのように機能を完成し、どのような機能を完成するかを知っているからです.

ユニットテスト仕様

  • ユニットテストクラスの後にTestを加える.
  • 試験方法@Test寸法を使用する.
  • 試験方法名の前にtestを追加する.
  • 各試験方法は互いに独立している.
  • すべてのテストメソッドの戻りタイプはvoidであり、パラメータがない必要があります(これは守らなければなりません.そうしないと、テストを実行するときにエラーが発生します)
  • JUnit 4常用注記


    注釈
    注記位置
    機能
    @Test
    方法
    2つのプロパティがあります:1.Exceptedプロパティは、例外をテストするために使用されます.2.timeoutは性能をテストするために使用され、1つの方法が所定の時間内に完成できるかどうかをテストすることである.
    @Rule
    メンバー変数、メソッド(すべて非静的である必要があります)
    RuleはJUnit 4の新しい特性であり、JUnitの機能を拡張し、テスト方法の動作を柔軟に変更することができます.JUnitでは,@Ruleと@ClassRuleの2つの注釈でRule拡張を実現しているが,この2つの注釈はTestRuleの口実を実現したメンバー変数(@Rule)または静的変数(@ClassRule)に置く必要がある.Ruleと@ClassRuleの違いは,@Ruleはメソッドレベルであり,各テストメソッドの実行時に注釈されたRuleが呼び出され,@ClassRuleはクラスレベルであり,1つのテストクラスの実行時に注釈されたRuleが1回しか呼び出されない点である.Timeout、RuleChainなど、単一または複数のルールを設定できます.
    @Before
    方法
    各テストメソッドの実行前に自動的に呼び出す
    @After
    方法
    各テストメソッドの自動呼び出しが完了しました
    @BeforeClass
    方法
    すべてのテストメソッドを実行する前に1回実行し、テストクラスがインスタンス化されていないうちにロードされているのでstaticで修飾します.
    @AfterClass
    方法
    すべてのテストメソッドが1回実行されると、テストクラスでインスタンス化されずにロードされるのでstaticで修飾されます.
    @Ignore
    メソッド、クラス
    テストクラスまたはテストメソッドを実行しない
  • 試験@BeforeClass等実行順
  • public class AnnotationTest {
          public AnnotationTest(){
              System.out.println(" ");
          }
      ​
          @BeforeClass
          public static void setUpBeforeClass(){
              System.out.println("BeforeClass");
          }
      ​
          @AfterClass
          public static void tearDownAfterClass(){
              System.out.println("AfterClass");
          }
      ​
          @Before
          public void setUp(){
              System.out.println("Before");
          }
      ​
          @After
          public void tearDown(){
              System.out.println("After");
          }
      ​
          @Test
          public void test1(){
              System.out.println("Test1");
          }
      ​
          @Test
          public void test2(){
              System.out.println("Test2");
          }
      ​
          @Ignore
          public void test3(){
              System.out.println("Test3");
          }
      }
    

    出力:
      BeforeClass
       
      Before
      Test1
      After
       
      Before
      Test2
      After
      AfterClass
    
  • Timeoutテスト(タイムアウト直接放出異常)
  •   public class Example1 {
          @Rule()
          public Timeout t = new Timeout(100, TimeUnit.MILLISECONDS);
      ​
          @Test
          public void t1() throws Exception
          {
              Thread.sleep(200);
              assertEquals(1, 2);
          }
      }
    

    一般的なブレークスルー・メソッド


    アサーションメソッド
    さぎょう
    assertTrue
    条件が真かどうかを調べる
    assertFalse
    条件が偽かどうかを調べる
    fail
    レポートなしでテストを不合格にする
    assertEquals
    チェックが等しい
    assertNotEquals
    検査不等
    assertArrayEquals
    Arrayが等しいかどうかを確認
    assertNotNull
    空でないかチェック
    assertNull
    空かどうかを確認
    assertSame
    オブジェクト参照が等しいかどうかを確認
    assertNotSame
    オブジェクト参照が等しくないかどうかを確認
    assertThat
    オブジェクトがマッチングの条件を満たしているかどうかを確認します.org.hamcrest.CoreMatchersにはany,not,equalToなどの断言方法がたくさんあります

    テストキットの作成


    スイートテストクラスは、各テストを個別に実行するのではなく、注釈の順序で実行させます.
      @RunWith(Suite.class)
      @Suite.SuiteClasses({ PrepareMyBagTest.class, AddPencilsTest.class })
      public class SuitTest {
      }