29 Junit4
3605 ワード
JUnit 4は、作成したテストを実行するためにAnnotationを全面的に導入しました.1.JUnit 4はテストクラスにTestCaseの親を継承する必要はありません.2.1つのテストクラスでは、@Test注釈によって修飾されたpublic、voidメソッドはすべてtest caseであり、JUnitによって実行することができる.3.JUnit 4はテストメソッド名がtestで始まることを要求しないが、JUnit 3.8の要求通りにtestをテストメソッド名の先頭としたほうがよい.4.JUnit 4では、@Before注記でJUnit 3.8のsetUpメソッドと同様の機能を実現し、
@After注記によりJUnit 3.8のtearDownメソッドと同様の機能を実現する.
5.JUnit 4では、@BeforeClassと@AfterClassの注記を使用してpublicstaticを修飾できます.
void no-argの方法
@BeforeClass注記で修飾されたメソッドは、すべてのテストメソッドが実行される前に実行されます.
@AfterClass注記で修飾されたメソッドは、すべてのテストメソッドが実行された後に実行されます.
この方法は通常、比較的時間がかかり、データベースへの接続と同様にテストに関係のない方法を実行します.
expectedテスト異常
6.@Ignore注記は、テストクラスとテストメソッドを修飾するために使用できます.テストクラスを修飾すると、無視することを示します.
クラス内のすべてのテスト方法;試験方法を修飾すると、試験方法を無視することを示す.
10.パラメトリックテスト(Parameters):テストクラスがパラメトリックランナを使用して実行される場合、
クラスの宣言に@RunWith(Parameterized.class)注記を付ける必要があります.このクラスはJUnitを使用しないことを示します.
組み込まれたアクチュエータは実行され、パラメトリックアクチュエータは実行されます.
パラメータ化実行クラスでパラメータを提供する方法では@Parameters注記を使用して修飾し、テストクラスの構築方法で各パラメータに値を割り当て(構築方法はJUnitによって呼び出される)、最後にテストクラスを作成し、パラメータのグループ数に基づいてテストを複数回実行します.
11.JUnit 4で複数のテストを同時に実行するには、@RunWith(Suite.class)と@Suiteの2つの注記が必要です.SuiteClasses()は、Suiteドライバを使用してテストを実行するか、実行するテストクラスを指定します.このうち@SuiteClassesではSuiteを指定し続けることができ、JUnitは中のテストクラスを探します.
実行可能なTest Caseを見つけて実行します.
12.JUnitはTestCaseクラスにテンプレートメソッドパターンを適用した:13.JUnitはTestCaseクラスにアダプタ(Adapter)モードを適用した:runBareメソッドでは、runTestメソッドによって私たちが作成したtestXXXメソッドを適切に配合し、JUnitが私たちが作成したTest Caseを実行できるようにした.runTestメソッドの実現は以下の通りである.
runTestメソッドでは、まず、我々が作成したtestXXXメソッドに対応するMethodオブジェクト(パラメータなし)を取得し、その後、そのMethodオブジェクトに対応するメソッドがpublicであるかどうかを確認し、もしそうであればMethodオブジェクトのinvokeメソッドを呼び出して、我々が作成したtestXXXメソッドを実行する.
14 JUnitでエラー(error)と失敗(failure)を区別する1)エラーとは、コードに異常が投げ出されたことなどがコードの正常な実行に影響する場合を指し、例えばArrayIndexOutOfBoundsExceptionが投げ出されたことをエラーと呼ぶ.2)失敗とは,期待される結果がプログラムが実際に実行した結果と一致しないと断言したり,fail()メソッドを直接呼び出したりすることを失敗と呼ぶ.
@After注記によりJUnit 3.8のtearDownメソッドと同様の機能を実現する.
public class CaculateTest
{
private Caculate cal;
@Before
public void init()
{
cal=new Caculate();
}
@Test
public void testAdd()
{
cal=new Caculate();
int result=cal.add(1,2);
Assert.assertEquals(3,result);
}
@After
public void destory()
{
}
}
5.JUnit 4では、@BeforeClassと@AfterClassの注記を使用してpublicstaticを修飾できます.
void no-argの方法
@BeforeClass注記で修飾されたメソッドは、すべてのテストメソッドが実行される前に実行されます.
@AfterClass注記で修飾されたメソッドは、すべてのテストメソッドが実行された後に実行されます.
この方法は通常、比較的時間がかかり、データベースへの接続と同様にテストに関係のない方法を実行します.
@BeforeClass
public static void globalInit()
{
System.out.println("globalInit invoked!");
}
@AfterClass
public static void globalDestroy()
{
System.out.println("globalDestroy invoked!");
}
timeoutテストタイムアウト@Test(timeout = 1400)
public void testAdd()
{
cal=new Caculate();
int result=cal.add(1,2);
Assert.assertEquals(3,result);
}
expectedテスト異常
@Test (expected =Exception.class)
public void testdivid() throws Exception
{
cal=new Caculate();
cal.divide(1,0);
}
6.@Ignore注記は、テストクラスとテストメソッドを修飾するために使用できます.テストクラスを修飾すると、無視することを示します.
クラス内のすべてのテスト方法;試験方法を修飾すると、試験方法を無視することを示す.
@Test(expected = Exception.class)
//@Ignore("not ready yet")
public void testGetLargest3() throws Exception
{
largest.getLargest(new int[]{});
}
10.パラメトリックテスト(Parameters):テストクラスがパラメトリックランナを使用して実行される場合、
クラスの宣言に@RunWith(Parameterized.class)注記を付ける必要があります.このクラスはJUnitを使用しないことを示します.
組み込まれたアクチュエータは実行され、パラメトリックアクチュエータは実行されます.
パラメータ化実行クラスでパラメータを提供する方法では@Parameters注記を使用して修飾し、テストクラスの構築方法で各パラメータに値を割り当て(構築方法はJUnitによって呼び出される)、最後にテストクラスを作成し、パラメータのグループ数に基づいてテストを複数回実行します.
@RunWith(Parameterized.class)
public class ParametersTest
{
private int expected;
private int input1;
private int input2;
@Parameters
public static Collection parameterData()
{
Object [][] objects={{3,1,2},{2,1,1},{4,3,1}};
return Arrays.asList(objects);
}
public ParametersTest(int expected,int input1,int input2)
{
this .expected=expected;
this.input1=input1;
this .input2=input2;
}
@Test
public void testAdd()
{
Caculate caculate=new Caculate();
Assert.assertEquals(this.expected,caculate.add(this .input1,this .input2
));
}
}
11.JUnit 4で複数のテストを同時に実行するには、@RunWith(Suite.class)と@Suiteの2つの注記が必要です.SuiteClasses()は、Suiteドライバを使用してテストを実行するか、実行するテストクラスを指定します.このうち@SuiteClassesではSuiteを指定し続けることができ、JUnitは中のテストクラスを探します.
実行可能なTest Caseを見つけて実行します.
12.JUnitはTestCaseクラスにテンプレートメソッドパターンを適用した:13.JUnitはTestCaseクラスにアダプタ(Adapter)モードを適用した:runBareメソッドでは、runTestメソッドによって私たちが作成したtestXXXメソッドを適切に配合し、JUnitが私たちが作成したTest Caseを実行できるようにした.runTestメソッドの実現は以下の通りである.
runTestメソッドでは、まず、我々が作成したtestXXXメソッドに対応するMethodオブジェクト(パラメータなし)を取得し、その後、そのMethodオブジェクトに対応するメソッドがpublicであるかどうかを確認し、もしそうであればMethodオブジェクトのinvokeメソッドを呼び出して、我々が作成したtestXXXメソッドを実行する.
14 JUnitでエラー(error)と失敗(failure)を区別する1)エラーとは、コードに異常が投げ出されたことなどがコードの正常な実行に影響する場合を指し、例えばArrayIndexOutOfBoundsExceptionが投げ出されたことをエラーと呼ぶ.2)失敗とは,期待される結果がプログラムが実際に実行した結果と一致しないと断言したり,fail()メソッドを直接呼び出したりすることを失敗と呼ぶ.