Как получить название в настоящее время запущенное тест в Споке?
-
27-10-2019 - |
Вопрос
В 3 -м юните я мог бы получить название в настоящее время проводящего тестирования так:
public class MyTest extends TestCase {
public void testSomething() {
assertThat(getName(), is("testSomething"));
}
}
Как мне сделать это в Споке? Я хотел бы использовать имя теста в качестве ключа в общем ресурсе, чтобы тесты не мешали друг другу.
Решение
Одним из решений является использование правила имени тестирования 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 или выше.
Другие советы
Для Spock 1.0-Groovy-2.4 вы можете попробовать:
def "Simple test"() {
expect:
specificationContext.currentIteration.name == "Simple test"
}
Не связан с StackOverflow