Я только что прочитал документацию по тестированию DropWizard и влюбился в его встроенные интегрированные возможности тестирования. TL;DR: это позволяет вашим тестам JUnit запускать экземпляры Jetty в памяти и, по сути, обслуживать ваши конечные точки API (методы ресурсов), поскольку они будут существовать в дикой природе. Это позволяет вам фактически поразить ваши конечные точки API с клиентом (против localhost
) и посмотреть, как они работают/работают. Потрясающий!
Мне интересно, можно ли использовать этот DropWizardAppRule
(или что-то похожее на него) для запуска/завершения моего приложения DropWizard и проверки отсутствия исключений (тестирование дыма); и
Дымовое тестирование было бы полезно, потому что может быть какое-то исключение, связанное с инициализацией, которое препятствует запуску приложения (плохой файл конфигурации и т. д.), и было бы неплохо знать об этом заранее. Аналогичным образом, дымовое тестирование при завершении работы полезно, потому что у нас может быть что-то, что не закрывается/не закрывается изящно, и может быть зависший поток, который просто не умрет, и т. д.
Также было бы неплохо провести стресс-тестирование работающего сервера в памяти и посмотреть, где он выходит из строя (возможно, выдавая OOME?).
Итак, учитывая следующий фрагмент кода:
public class IntegrationTest {
@ClassRule
public static final DropwizardAppRule<TestConfiguration> RULE =
new DropwizardAppRule<TestConfiguration>(MyApp.class, resourceFilePath("my-app-config.yaml"));
@Test
public void shouldStartWithNoExceptions() {
// ???
}
@Test
public void stressTest10kUsers() {
// What exceptions could I check for to see if the server pushed over after
// 10,000 random endpoints were hit?
}
@Test
public void shouldShutdownGracefully() {
// ???
}
}
Я спрашиваю:
- Как проверить запуск сервера без исключения?
- Как проверить, отвечает ли сервер по-прежнему и не умер (из-за стресс-тестирования)?
- Как мне выключить сервер и убедиться, что исключения не были выброшены или ничто не помешало корректному завершению работы?