2011-12-03 73 views
12

在JUnit 3中,我能得到這樣的當前運行測試的名稱:如何獲取spock當前正在運行的測試的名稱?

public class MyTest extends TestCase { 
    public void testSomething() { 
     assertThat(getName(), is("testSomething")); 
    } 
} 

如何在斯波克做到這一點?我想將測試名稱用作共享資源中的一個鍵,以便測試不會互相干擾。

回答

18

一種解決方案是利用JUnit的測試名規則:

import org.junit.Rule 
import org.junit.rules.TestName 

class MySpec extends Specification { 
    @Rule TestName name = new TestName() 

    def "some test"() { 
     expect: name.methodName == "some test" 
    } 
} 

此,需要JUnit 4.7或更高版本。

+1

只是想知道..什麼是該用例? –

+0

感謝它爲我工作,我們有特殊要求 – Pushkar

+0

是否有某種方法可以從腳本設置'def setup'和'def cleanup'之後獲得名稱? – will

3

石破天驚1.0 Groovy的2.4,你可以嘗試:

def "Simple test"() { 

    expect: 
    specificationContext.currentIteration.name == "Simple test" 
} 
+0

與「1.0-groovy-2.4」相同的不錯作品。 – prayagupd

相關問題