2013-06-21 63 views
5

我想在@Before方法中獲取當前正在執行的TestCase方法的名稱。 實施例在JUNIT @Before中獲取當前正在執行的@Test方法的名稱

public class SampleTest() 
{ 
    @Before 
    public void setUp() 
    { 
     //get name of method here 
    } 

    @Test 
    public void exampleTest() 
    { 
     //Some code here. 
    } 
} 
+0

http://stackoverflow.com/questions/473401/get-name-of-curren tly-execution-test-in-junit-4? – ivarni

+0

在您的測試類中添加一個字段'previousName',並在每個測試方法的末尾將其值設置爲After – TecHunter

回答

16

如所討論的here,嘗試使用@rule和測試名組合。

按照documentation之前的方法應該有測試名稱。

註釋包含規則的字段。這樣的字段必須是公開的,而不是 static,以及TestRule的子類型。傳遞給 TestRule該語句將運行任何方法,那麼該測試方法之前,和 最後後置方法,拋出一個異常,如果其中任何一個失敗

下面是使用JUnit 4.9

測試用例
public class JUnitTest { 

    @Rule public TestName testName = new TestName(); 

    @Before 
    public void before() { 
     System.out.println(testName.getMethodName()); 
    } 

    @Test 
    public void test() { 
     System.out.println("test ..."); 
    } 
} 
2

嘗試使用@Rule批註與org.junit.rules.TestName

@Rule public TestName name = new TestName(); 

@Test 
public void test() { 
    assertEquals("test", name.getMethodName()); 
} 
相關問題