如何在spock中获取当前运行测试的名称?

时间:2011-12-03 04:16:58

标签: spock

在JUnit 3中,我可以得到当前正在运行的测试的名称:

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

我如何在spock中执行此操作?我想将测试名称用作共享资源中的密钥,以便测试不会相互干扰。

1 个答案:

答案 0 :(得分:19)

一种解决方案是利用JUnit的TestName规则:

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或更高版本。