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類型。 然後,可以在我們的測試中,這名稱字段使用和查找,例如測試方法的名稱,這種特定情況。