JUnit5 Спок 2, @Extend с не работает - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь настроить платформу тестирования для нашего нового проекта. Мы хотим использовать Спока 2 с JUnit 5.

А теперь я хочу использовать @ExtendWith аннотацию в тесте на основе Спока.

Вот пример:

@SpringBootTest(classes = ExtensionTest.class)
@ExtendWith(ClassExtension.class)
class ExtensionTest extends Specification {
    void "test"() {
        when:
        true

        then:
        noExceptionThrown()
    }
}

Данное расширение (ClassExtension) реализует интерфейсы: BeforeAllCallback и AfterAllCallback.

class ClassExtension implements BeforeAllCallback, AfterAllCallback {
    @Override
    void beforeAll(ExtensionContext extensionContext) throws Exception {
       ...
    }

    @Override
    void afterAll(ExtensionContext extensionContext) throws Exception {
       ...
    }
}

К сожалению, это не работает. Расширение не запускается.

Что я делаю не так?

1 Ответ

0 голосов
/ 17 апреля 2020

Spock 2.x не использует Jupiter Engine, но реализует свой собственный SpockEngine и собственный SpockExecutionContext на основе API Jupiter. Очевидно, что он не поддерживает расширения Jupiter, возможно, потому, что у Spock есть свои собственные механизмы расширения для глобальных и управляемых аннотациями расширений.

Итог: я рекомендую перенести ваше расширение JUnit Jupiter на расширение Spock. Там у вас также есть лучшие способы подключиться к жизненному циклу Спока.

...