#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()
}