Как я могу запустить тесты cucumber моего приложения grails-5 в рамках проверки . / gradlew?

#gradle #grails #cucumber #cucumber-java

#gradle #grails #cucumber #cucumber-java

Вопрос:

Я пишу Grails-5 и использую cucumber для BDD. Я следовал руководству по адресу: https://www.baeldung.com/java-cucumber-gradle

Я могу запускать свои модульные тесты с помощью:

 $ ./gradlew check
 

И я могу запустить свои тесты cucumber BDD, запустив сервер в одной оболочке:

 $ ./gradlew server:bootRun
 

И вызов тестов в другом:

 $ ./gradlew cucumberCli
 

Можно ли настроить build.gradle таким образом, чтобы ./gradlew check запустить модульные тесты, затем запустить сервер, затем запустить тесты cucumber и, наконец, снова отключить сервер?

Если это вообще возможно, было бы еще лучше, если бы инфраструктура cucumber могла запускать и останавливать сервер между каждым тестом. Таким образом, каждый тест будет начинаться в известном состоянии.

Ответ №1:

Мне удалось заставить это работать, добавив @Before @After шаги и в мой StepDefinitions.groovy файл:

     def serverProcess

    private String getBaseUrl() {
        return "http://localhost/"
    }

    @Before
    public void startServer() {
        try {
            serverProcess=Runtime.getRuntime().exec("../gradlew bootRun")
        } catch (IOException e) {
            e.printStackTrace()
        }

        def done = false
        while(!done) {
            try {
                done = new URL(getBaseUrl()).openConnection().getResponseCode() == 200
            } catch(Exception e) {
                Thread.sleep(500)
            }
        }
    }

    @After
    public void stopServer() {
        serverProcess.destroy()
    }