Я пишу приемочные тесты для микросервиса Java, используя jUnit 4 и RestEasy.Я запускаю локальный сервер вне тестов, и тесты используют RestEasy, чтобы попасть на этот локальный URL для выполнения тестирования.Тесты являются функциональными, однако ни IntelliJ, ни Jacoco не могут обеспечить покрытие для тестируемого кода.
В настоящее время тесты настроены так:
@RunWith(SpringRunner.class)
public class BaseAcceptanceTest {
@Value("${test.server.uri:http://localhost:8080}")
String serverURI;
public String getBaseUri() {
Logger LOG = LoggerFactory.getLogger(getClass());
LOG.info("Server under acceptance test: {} ", serverURI);
return serverURI;
}
}
Образец теста:
@Test
public void queryTest() throws Exception {
given()
.baseUri(getBaseUri())
.param("q", "test")
.when()
.get("/v1/search/query")
.then()
.body("", MainValidationFactory.getValidator(VALIDATION_PREFIX + "Test"))
.log()
.ifValidationFails();
}
Я могу создать покрытие, если использую Spring Boot.:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = {
Server.class, ServerModule.class
})
Однако для этого требуется, чтобы сервер запускался каждый раз, когда я запускаю тесты, что очень неудобно для локального тестирования, а также сложно управлять в нашем конвейере сборки.
ЕстьЕсть ли способ настроить Resteasy, IntelliJ или Jacoco для получения покрытия с использованием не встроенного сервера?