Junit-api
JUnit-API
JUnitで最も重要なパッケージは junit.framework で、これにはすべてのコアクラスが含まれています。 重要なクラスのいくつかは次のとおりです-
Sr.No. | Class Name | Functionality |
---|---|---|
1 | Assert | A set of assert methods. |
2 | TestCase | A test case defines the fixture to run multiple tests. |
3 | TestResult | A TestResult collects the results of executing a test case. |
4 | TestSuite | A TestSuite is a composite of tests. |
クラスをアサート
以下は org.junit.Assert クラスの宣言です-
public class Assert extends java.lang.Object
このクラスは、テストの作成に役立つ一連のアサーションメソッドを提供します。 失敗したアサーションのみが記録されます。 Assertクラスの重要なメソッドのいくつかは次のとおりです-
Sr.No. | Methods & Description |
---|---|
1 |
void assertEquals(boolean expected, boolean actual) 2つのプリミティブ/オブジェクトが等しいことを確認します。 |
2 |
void assertFalse(boolean condition) 条件が偽であることを確認します。 |
3 |
void assertNotNull(Object object) オブジェクトがnullでないことを確認します。 |
4 |
void assertNull(Object object) オブジェクトがnullであることを確認します。 |
5 |
void assertTrue(boolean condition) 条件が真であることを確認します。 |
6 |
void fail() メッセージなしでテストに失敗します。 |
上記の方法のいくつかを例で使用してみましょう。 C:\> JUNIT_WORKSPACE にTestJunit1.javaという名前のJavaクラスファイルを作成します。
import org.junit.Test;
import static org.junit.Assert.*;
public class TestJunit1 {
@Test
public void testAdd() {
//test data
int num = 5;
String temp = null;
String str = "Junit is working fine";
//check for equality
assertEquals("Junit is working fine", str);
//check for false condition
assertFalse(num > 6);
//check for not null value
assertNotNull(temp);
}
}
次に、C:\> JUNIT_WORKSPACEに TestRunner1.java という名前のJavaクラスファイルを作成して、テストケースを実行します。
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner1 {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestJunit1.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
javacを使用してテストケースとテストランナークラスをコンパイルします。
C:\JUNIT_WORKSPACE>javac TestJunit1.java TestRunner1.java
テストランナーを実行します。これにより、提供されたテストケースクラスで定義されたテストケースが実行されます。
C:\JUNIT_WORKSPACE>java TestRunner1
出力を確認します。
true
TestCaseクラス
以下は org.junit.TestCase クラスの宣言です-
public abstract class TestCase extends Assert implements Test
テストケースは、複数のテストを実行するフィクスチャを定義します。 TestCase クラスの重要なメソッドのいくつかは次のとおりです-
Sr.No. | Methods & Description |
---|---|
1 |
int countTestCases() run(TestResult result)によって実行されたテストケースの数をカウントします。 |
2 |
TestResult createResult() デフォルトのTestResultオブジェクトを作成します。 |
3 |
String getName() TestCaseの名前を取得します。 |
4 |
TestResult run() このテストを実行する便利なメソッドで、デフォルトのTestResultオブジェクトで結果を収集します。 |
5 |
void run(TestResult result) テストケースを実行し、TestResultで結果を収集します。 |
6 |
void setName(String name) TestCaseの名前を設定します。 |
7 |
void setUp() ネットワーク接続を開くなど、フィクスチャをセットアップします。 |
8 |
void tearDown() たとえば、フィクスチャを引き裂くと、ネットワーク接続が閉じられます。 |
9 |
String toString() テストケースの文字列表現を返します。 |
上記の方法のいくつかを例で使用してみましょう。 C:\> JUNIT_WORKSPACEに TestJunit2.java という名前のJavaクラスファイルを作成します。
import junit.framework.TestCase;
import org.junit.Before;
import org.junit.Test;
public class TestJunit2 extends TestCase {
protected double fValue1;
protected double fValue2;
@Before
public void setUp() {
fValue1 = 2.0;
fValue2 = 3.0;
}
@Test
public void testAdd() {
//count the number of test cases
System.out.println("No of Test Case = "+ this.countTestCases());
//test getName
String name = this.getName();
System.out.println("Test Case Name = "+ name);
//test setName
this.setName("testNewAdd");
String newName = this.getName();
System.out.println("Updated Test Case Name = "+ newName);
}
//tearDown used to close the connection or clean up activities
public void tearDown( ) {
}
}
次に、C:\> JUNIT_WORKSPACEに TestRunner2.java という名前のJavaクラスファイルを作成して、テストケースを実行します。
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner2 {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestJunit2.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
javacを使用してテストケースとテストランナークラスをコンパイルします。
C:\JUNIT_WORKSPACE>javac TestJunit2.java TestRunner2.java
テストランナーを実行します。これにより、提供されたテストケースクラスで定義されたテストケースが実行されます。
C:\JUNIT_WORKSPACE>java TestRunner2
出力を確認します。
No of Test Case = 1
Test Case Name = testAdd
Updated Test Case Name = testNewAdd
true
TestResultクラス
以下は org.junit.TestResult クラスの宣言です-
public class TestResult extends Object
TestResultは、テストケースの実行結果を収集します。 これは、収集パラメータパターンのインスタンスです。 テストフレームワークは、失敗とエラーを区別します。 失敗が予想され、アサーションでチェックされます。 エラーは、ArrayIndexOutOfBoundsExceptionのような予期しない問題です。 TestResult クラスの重要なメソッドのいくつかは次のとおりです-
Sr.No. | Methods & Description |
---|---|
1 |
void addError(Test test, Throwable t) エラーのリストにエラーを追加します。 |
2 |
void addFailure(Test test, AssertionFailedError t) 失敗のリストに失敗を追加します。 |
3 |
void endTest(Test test) テストが完了したことを結果に通知します。 |
4 |
int errorCount() 検出されたエラーの数を取得します。 |
5 |
Enumeration<TestFailure> errors() エラーの列挙を返します。 |
6 |
int failureCount() 検出された障害の数を取得します。 |
7 |
void run(TestCase test) TestCaseを実行します。 |
8 |
int runCount() 実行テストの数を取得します。 |
9 |
void startTest(Test test) テストが開始されることを結果に通知します。 |
10 |
void stop() テストの実行を停止する必要があることを示します。 |
C:\> JUNIT_WORKSPACEに TestJunit3.java という名前のJavaクラスファイルを作成します。
import org.junit.Test;
import junit.framework.AssertionFailedError;
import junit.framework.TestResult;
public class TestJunit3 extends TestResult {
//add the error
public synchronized void addError(Test test, Throwable t) {
super.addError((junit.framework.Test) test, t);
}
//add the failure
public synchronized void addFailure(Test test, AssertionFailedError t) {
super.addFailure((junit.framework.Test) test, t);
}
@Test
public void testAdd() {
//add any test
}
//Marks that the test run should stop.
public synchronized void stop() {
//stop the test here
}
}
次に、C:\> JUNIT_WORKSPACEに TestRunner3.java という名前のJavaクラスファイルを作成して、テストケースを実行します。
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner3 {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestJunit3.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
javacを使用してテストケースとテストランナークラスをコンパイルします。
C:\JUNIT_WORKSPACE>javac TestJunit3.java TestRunner3.java
テストランナーを実行します。これにより、提供されたテストケースクラスで定義されたテストケースが実行されます。
C:\JUNIT_WORKSPACE>java TestRunner3
出力を確認します。
true
TestSuiteクラス
以下は org.junit.TestSuite クラスの宣言です。
public class TestSuite extends Object implements Test
TestSuiteは、テストの複合です。 テストケースのコレクションを実行します。 TestSuite クラスの重要なメソッドのいくつかは次のとおりです-
Sr.No. | Methods & Description |
---|---|
1 |
void addTest(Test test) スイートにテストを追加します。 |
2 |
void addTestSuite(Class<? extends TestCase> testClass) 指定されたクラスのテストをスイートに追加します。 |
3 |
int countTestCases() このテストで実行されるテストケースの数をカウントします。 |
4 |
String getName() スイートの名前を返します。 |
5 |
void run(TestResult result) テストを実行し、結果をTestResultに収集します。 |
6 |
void setName(String name) スイートの名前を設定します。 |
7 |
Test testAt(int index) 指定されたインデックスでテストを返します。 |
8 |
int testCount() このスイート内のテストの数を返します。 |
9 |
static Test warning(String message) 失敗するテストを返し、警告メッセージを記録します。 |
C:\> JUNIT_WORKSPACEに JunitTestSuite.java という名前のJavaクラスファイルを作成して、テストスイートを作成します。
import junit.framework.*;
public class JunitTestSuite {
public static void main(String[] a) {
//add the test's in the suite
TestSuite suite = new TestSuite(TestJunit1.class, TestJunit2.class, TestJunit3.class );
TestResult result = new TestResult();
suite.run(result);
System.out.println("Number of test cases = " + result.runCount());
}
}
javacを使用してテストスイートクラスをコンパイルします。
C:\JUNIT_WORKSPACE>javac JunitTestSuite.java
次に、テストスイートを実行します。
C:\JUNIT_WORKSPACE>java JunitTestSuite
出力を確認します。
No of Test Case = 1
Test Case Name = testAdd
Updated Test Case Name = testNewAdd
Number of test cases = 3