Спок игнорирует тест, если «тест настройки» не удался - PullRequest
0 голосов
/ 20 марта 2020

Я пишу своего рода интеграционный тест. Мне нужно проверить, действительно ли запущены тестируемые среды.

псевдокод:

def "setup test"() {
    expect:
    service1.isRunning()
    service2.isRunning()
}

def "test1"() {
    expect:
    service1.something() == 1
    service2.something() == 2
}

def "test2"() {
    // ...
}

По сути, я даже не хочу видеть результаты "test1" и "test2", если «тест настройки» не пройден (они тоже обязательно пройдут!). Как мне этого добиться? Я пробовал @IgnoreIf, но, похоже, это решение только для тех условий, которые мы можем предоставить за пределами теста.

1 Ответ

1 голос
/ 20 марта 2020

Можно попытаться использовать аннотацию @Stepwise (определенную на уровне класса) для достижения гарантированного порядка и пропустить оставшиеся тесты в случае сбоя. Конечно, побочным эффектом является то, что если test1 не удается, test2 не будет запущен, но это самый простой способ ввести последовательное и условное выполнение.

Указывает, что Методы объектов spe c должны запускаться последовательно в объявленном порядке (даже при наличии параллельного бегуна spe c), всегда начиная с первого метода. В случае сбоя метода остальные методы будут пропущены. Методы объектов, объявленные в супер- и подсписках, не затрагиваются.

@Stepwise полезно для спецификаций с (логическими) зависимостями между методами. В частности, это помогает избежать последовательных ошибок после сбоя метода, что облегчает понимание того, что действительно пошло не так.


Источник: http://spockframework.org/spock/javadoc/1.0/spock/lang/Stepwise.html

...