在JUnit 3中,我可以得到当前正在运行的测试的名称:
public class MyTest extends TestCase {
public void testSomething() {
assertThat(getName(), is("testSomething"));
}
}
我如何在spock中执行此操作?我想将测试名称用作共享资源中的密钥,以便测试不会相互干扰。
答案 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或更高版本。