ユニットテストのJUnit

3587 ワード

Unit Testing with JUnit - Tutorial

2.試験用語

  • コード(orアプリケーション)under test:テストされたコードを指す
  • Test fixture:??
  • Unit tests and unit testing:ユニットテストの目標は、メソッドやクラスなどの小さなセグメントコードです.
  • Integration tests:
  • Performance tests:
  • Behavior vs.state testing:behavior testing特定のメソッドがwith正しいパラメータを呼び出されているかどうかを確認する.State testing検証関数呼び出しの結果(戻り値)
  • 3.テスト管理


    通常、ユニットテストコードは特定のディレクトリの下に配置され、プロジェクトソースコードとは別に

    4.JUnitを使う


    1つのJUnitテストはテストクラスの1つの方法であり、1つのJUnit 4テストを作成するには、関数に注記@org.junit.Test注記を付けるだけです.この関数はテストコードを実行します.assert文を使用して、実際の戻り値が所望の値と一致するかどうかを確認できます.
    簡単なJUnitテストの例:
    import static org.junit.Assert.assertEquals;
    import org.junit.Test;
    
    public class MyTests {
        @Test
        public void multiplicationOfZeroIntegersShouldReturnZero() {
            MyClass tester = new MyClass(); // MyClass is tested
            // assert statements
            assertEquals("10 x 0 must be 0", 0, tester.multiply(10, 0));
            assertEquals("0 x 10 must be 0", 0, tester.multiply(0, 10));
            assertEquals("0 x 0 must be 0", 0, tester.multiply(0, 0));
        }
    }
    

    JUnitテストのネーミング仕様は、テスト対象クラスの名前に接尾辞「-test」を付けてテストクラスのネーミングを行います
    JUnit test suites:複数のテストクラスがある場合は、それらを1つのtest suiteに結合できます.

    5.JUnitコード構造

  • JUnit 4は、試験方法として関数を注記で表示し、それらを構成する
  • Annotation
    Description
    @Test public void method()
    The @Test annotation identifies a method as a test method.
    @Test (expected = Exception.class)
    関数に例外が投げ出されなかった場合、テストに失敗しました.
    @Test(timeout=100)
    関数の実行時間が100 msより大きい場合、テストに失敗します.
    @Before public void method()
    テスト環境を初期化するために、各テストが開始される前に実行されます.
    @After public void method()
    各テストが終了すると実行されます
    @BeforeClass public static void method()
    すべてのテストが開始されるまで1回のみ実行
    @AfterClass public static void method()
    すべてのテストの実行が終了した後に1回のみ実行
    @Ignore or @Ignore("Why disabled")
    テスト関数を無視
  • Assert文
  • Statement
    Description
    fail(message)
    テストを直接失敗させる
    assertTrue([message,] boolean condition)
    boolean conditionがtrueであるかどうかを確認します.
    assertFalse([message,] boolean condition)
    boolean conditionがfalseであるかどうかを確認します
    assertEquals([message,] expected, actual)
    2つの値が同じかどうかをテスト
    assertEquals([message,] expected, actual, tolerance)
    floatまたはdoubleの値が同じかどうかをテストします
    assertNull([message,] object)
    チェック対象が空です
    assertNotNull([message,] object)
    チェック対象が空ではありません
    assertSame([message,] expected, actual)
    2つの変数が同じオブジェクトを参照していることを確認します.
    assertNotSame([message,] expected, actual)
    2つの変数が異なるオブジェクトを参照していることを確認します.
    JUnitはすべてのテスト関数が任意の順序で実行できると仮定しているので、テストコードを書くときは他のテストの実行順序に依存してはいけない.
    実行時にテストを動的に無視するには、次の手順に従います.
    Assume.assumeFalse(System.getProperty("os.name").contains("Linux"));
    

    10.JUnitプレミアム

  • Parameterized test
  • JUnit Rules JUnit Rulesは、JUnit Rulesを介してテストクラスの各テストに動作を追加することができる.タイプTestRuleの属性表示@Rule注記とすることができます.作成したオブジェクトは、テスト関数で使用および構成できます.
  • public class RuleTester {
        @Rule
        public TemporaryFolder folder = new TemporaryFolder();
    
        @Test
        public void testUsingTempFolder() throws IOException {
            File createdFolder = folder.newFolder("newfolder");
            File createdFile = folder.newFile("myfilefile.txt");
            assertTrue(createdFile.exists());
        }
    }
    
  • Writing custom JUnit rules
  • Categories