Подтвердить что ты не робот

Как получить имя текущего запуска теста в spock?

В JUnit 3 я могу получить имя текущего запуска, например:

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

Как это сделать в spock? Я хотел бы использовать имя теста как ключ в общем ресурсе, чтобы тесты не мешали друг другу.

4b9b3361

Ответ 1

Одним из решений является использование правила 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 или выше.

Ответ 2

Для spock 1.0- groovy -2.4 вы можете попробовать:

def "Simple test"() {

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