JUnit規則


在本節中,我們學習和了解JUnit中叫做規則的新功能,它允許非常靈活在測試類重新定義每個測試方法的行為。為了這個目的,@Rule註解被使用來標出測試類的公共欄位。這些欄位型別為MethodRule,這是測試方法如何執行並報告。多個MethodRules可以應用到一個測試方法。MethodRule介面有很多的實現,如ErrorCollector在發現了第一個問題之後,也允許繼續執行一個測試,ExpectedException 允許在測試規範預期的異常型別和訊息,TestName 使得目前的測試名稱在測試方法內部可用,以及其他許多。除了那些已經定義的規則,開發人員可以建立自己的自定義規則,並使用來測試自己用例。

下面我們介紹方法,可以使用一個名為TestName,在我們自己現有的測試規則。 TestName被呼叫在測試開始時。

NameRuleTest.java

package com.javacodegeeks.junit;

import static org.junit.Assert.*;

import org.junit.*;
import org.junit.rules.TestName;

public class NameRuleTest {
	@Rule
	public TestName name = new TestName();

	@Test
	public void testA() {
		System.out.println(name.getMethodName());
		assertEquals("testA", name.getMethodName());

	}

	@Test
	public void testB() {
		System.out.println(name.getMethodName());
		assertEquals("testB", name.getMethodName());
	}
}

我們可以看到,@Rule註解標記的型別是MethodRule的公共欄位名,具體而言是TestName型別。 然後,可以在我們的測試中,這名稱欄位使用和查詢,例如測試方法的名稱,這種特定情況。