JUnitでよく見られる注釈と断言方法

4436 ワード

このサポートでは、JUnit 4の基本的な注釈について、次の表にこれらの注釈の概要を示します.
注釈
説明
@Test public void method()
テストコメントは、共通の無効なメソッドがアタッチされていることをテスト例として示す.
@Before public void method()
Beforeコメントは、このメソッドがクラス内の各テストの前に実行され、テストに必要な前提条件を実行する必要があることを示しています.
@BeforeClass public static void method()
BeforeClassコメントは、静的メソッドが1回実行され、クラスのすべてのテストの前にアタッチされていることを示しています.この場合、一般的には、データベースへの接続などの共有構成方法の計算をテストします.
@After public void method()
Afterコメントは、各テストを実行した後に実行する方法(各テストを実行した後に特定の変数をリセットしたり、一時的な変数を削除したりするなど)を示します.
@AfterClass public static void method()
すべてのテストがJUnitテストケースクラスの後に実行される必要がある場合、AfterClass注釈は、データベースから接続を切断するなどの確立方法をクリーンアップするために使用できます.注意:このコメント(BeforeClassと同様)が添付されている方法は、静的として定義する必要があります.
@Ignore public static void method()
特定のテスト実行を一時的に無効にするには、無視コメントを使用します.@Ignoreとして注記される各メソッドは実行されません.
package com.yiibai.junit;

import static org.junit.Assert.*;
import java.util.*;
import org.junit.*;

public class AnnotationsTest {

	private ArrayList testList;

	@BeforeClass
	public static void onceExecutedBeforeAll() {
		System.out.println("@BeforeClass: onceExecutedBeforeAll");
	}

	@Before
	public void executedBeforeEach() {
		testList = new ArrayList();
		System.out.println("@Before: executedBeforeEach");
	}

	@AfterClass
	public static void onceExecutedAfterAll() {
		System.out.println("@AfterClass: onceExecutedAfterAll");
	}

	@After
	public void executedAfterEach() {
		testList.clear();
		System.out.println("@After: executedAfterEach");
	}

	@Test
	public void EmptyCollection() {
		assertTrue(testList.isEmpty());
		System.out.println("@Test: EmptyArrayList");

	}

	@Test
	public void OneItemCollection() {
		testList.add("oneItem");
		assertEquals(1, testList.size());
		System.out.println("@Test: OneItemArrayList");
	}

	@Ignore
	public void executionIgnored() {

		System.out.println("@Ignore: This execution is ignored");
	}
}

上記のテストを実行すると、コンソールの出力は次の点になります.
@BeforeClass: onceExecutedBeforeAll
@Before: executedBeforeEach
@Test: EmptyArrayList
@After: executedAfterEach
@Before: executedBeforeEach
@Test: OneItemArrayList
@After: executedAfterEach
@AfterClass: onceExecutedAfterAll

これらのメソッドはすべてAssertクラスによってjavaが拡張されたと断言する.lang.Objectクラスは、障害を検出するために作成テストを提供します.次の表には、Assertクラスの静的メソッドである最も一般的な断言メソッドのより詳細な説明があります.
断言する
説明
void assertEquals([String message], expected value, actual value)
2つの値が等しいと断言します.値はint,short,long,byte,char or javaのタイプがある可能性があります.lang.Object. 最初のパラメータは、オプションの文字列メッセージです.
void assertTrue([String message], boolean condition)
条件を真と断言する
void assertFalse([String message],boolean condition)
条件を偽りと断言する
void assertNotNull([String message], java.lang.Object object)
オブジェクトが空ではないと断言する(null)
void assertNull([String message], java.lang.Object object)
オブジェクトが空であると断言する(null)
void assertSame([String message], java.lang.Object expected, java.lang.Object actual)
2つのオブジェクトが同じオブジェクトを参照すると断言
void assertNotSame([String message], java.lang.Object unexpected, java.lang.Object actual)
2つのオブジェクトは同じオブジェクトを参照していないと断言します.
void assertArrayEquals([String message], expectedArray, resultArray)
予想配列と結果配列が等しいと断言する.配列のタイプはint,long,short,char,byte or javaである可能性がある.lang.Object.
package com.yiibai.junit;

import static org.junit.Assert.*;
import org.junit.Test;

public class AssertionsTest {

	@Test
	public void test() {
		String obj1 = "junit";
		String obj2 = "junit";
		String obj3 = "test";
		String obj4 = "test";
		String obj5 = null;
		int var1 = 1;
		int var2 = 2;
		int[] arithmetic1 = { 1, 2, 3 };
		int[] arithmetic2 = { 1, 2, 3 };

		assertEquals(obj1, obj2);

		assertSame(obj3, obj4);

		assertNotSame(obj2, obj4);

		assertNotNull(obj1);

		assertNull(obj5);

		assertTrue(var1  var2);

		assertArrayEquals(arithmetic1, arithmetic2);
	}

}

以上のクラスでは,これらの断言手法が動作可能であることが分かる.
  • assertEquals()比較された2つのオブジェクトが等しい場合、このメソッドは正常に戻ります.それ以外の場合、JUnitに表示されたウィンドウテストは中止されます.
  • assertSame()メソッドとassertNotSame()メソッドは、2つのオブジェクト参照がまったく同じオブジェクトを指すことをテストします.
  • assertNull()およびassertNotNull()メソッドは、変数が空であるか空でないかをテストします.
  • assertTrue()およびassertFalse()メソッドは、if条件または変数がtrueかfalseかをテストします.
  • assertArrayEquals()は2つの配列を比較し、それらが等しい場合、この方法は続行され、エラーは発生しません.失敗した場合は、JUnitウィンドウに表示され、テストを中止します.