在 JUnit 3 中,我可以像这样获取当前正在运行的测试的名称:
public class MyTest extends TestCase {
public void testSomething() {
assertThat(getName(), is("testSomething"));
}
}
我如何在 spock 中做到这一点?我想将测试名称用作共享资源中的键,以便测试不会相互干扰。
在 JUnit 3 中,我可以像这样获取当前正在运行的测试的名称:
public class MyTest extends TestCase {
public void testSomething() {
assertThat(getName(), is("testSomething"));
}
}
我如何在 spock 中做到这一点?我想将测试名称用作共享资源中的键,以便测试不会相互干扰。
一种解决方案是利用 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 或更高版本。
对于 spock 1.0-groovy-2.4,您可以尝试:
def "Simple test"() {
expect:
specificationContext.currentIteration.name == "Simple test"
}