ユニットテストのJUnit
3587 ワード
Unit Testing with JUnit - Tutorial
コード(orアプリケーション)under test:テストされたコードを指す Test fixture:?? Unit tests and unit testing:ユニットテストの目標は、メソッドやクラスなどの小さなセグメントコードです. Integration tests: Performance tests: Behavior vs.state testing:
通常、ユニットテストコードは特定のディレクトリの下に配置され、プロジェクトソースコードとは別に
1つのJUnitテストはテストクラスの1つの方法であり、1つのJUnit 4テストを作成するには、関数に注記
簡単なJUnitテストの例:
JUnitテストのネーミング仕様は、テスト対象クラスの名前に接尾辞「-test」を付けてテストクラスのネーミングを行います
JUnit test suites:複数のテストクラスがある場合は、それらを1つのtest suiteに結合できます.
JUnit 4は、試験方法として関数を注記で表示し、それらを構成する Annotation
Description
@Test public void method()
The
@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はすべてのテスト関数が任意の順序で実行できると仮定しているので、テストコードを書くときは他のテストの実行順序に依存してはいけない.
実行時にテストを動的に無視するには、次の手順に従います.
Parameterized test JUnit Rules JUnit Rulesは、JUnit Rulesを介してテストクラスの各テストに動作を追加することができる.タイプ Writing custom JUnit rules Categories
2.試験用語
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コード構造
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")
テスト関数を無視
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プレミアム
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());
}
}