Запуск сервера при интеграционном тестировании с Gradle

Я разработал клиент-серверную архитектуру с использованием Kryonet и Gradle примерно со следующей структурой.

  • Родительский проект X, содержащий проекты A и B
  • Проект А (сервер)
  • Проект B (клиент), содержащий классы интеграции и модульного тестирования.

Теперь всякий раз, когда я запускаю цель «integrationTest» в проекте B (или проекте X, если это было проще), я бы хотел, чтобы сервер запускался заранее, чтобы интеграционные тесты не провалились.

Это то, что у меня есть в build.gradle проекта B, хотя он не запускает сервер:

task integrationTest(type: Test) {
    testClassesDir = sourceSets.integrationTest.output.classesDir
    classpath = sourceSets.integrationTest.runtimeClasspath
    outputs.upToDateWhen { false }
}

person Knight    schedule 29.02.2016    source источник


Ответы (1)


Самый краткий ответ, который я нашел, — использовать ProcessBuilder для запуска сервера в фоновом режиме, как подробно описано в ответе на этот вопрос: Как выполнить внешнюю задачу Gradle (Exec) в фоновом режиме?

В вашем случае я бы сделал задачу в родительском проекте X, которая запускает отдельную сборку gradle (используя вышеизложенное) для запуска сервера, а затем запускает клиент.

person Chris    schedule 08.03.2018