У меня есть класс Java с методом main, который я вызываю для периодического запуска некоторых тестов. В частности, я пытаюсь найти решение для быстрого тестирования различных фрагментов кода, которые используют AWS SDK для создания / чтения некоторых объектов S3. Я на самом деле не пытаюсь создавать регулярные модульные / интеграционные тесты, и мне не интересно издеваться над кодом S3. Я пытаюсь быстро разработать / отладить некоторый код, используя тестовую среду. Я нашел следующий вопрос и ответ об использовании JUnit5 Jupiter's Launcher, и он меня заинтриговал:
Как запустить тесты JUnit из моего java-приложения?
Поэтому я прочитал главу Junit5 по Launcher
API и следовал примеру кода. Я придумал что-то вроде этого:
class S3ManualTest {
public static void main(String[] args) {
LauncherDiscoveryRequest request =
LauncherDiscoveryRequestBuilder
.request()
.selectors(selectPackage("com.xyz.s3util"),
selectClass(S3ManualTest.class),
selectMethod(S3ManualTest.class, "happyPath")
)
.build();
Launcher launcher = LauncherFactory.create();
SummaryGeneratingListener listener = new SummaryGeneratingListener();
launcher.execute(request, listener);
TestExecutionSummary summary = listener.getSummary();
System.out.println("# of containers found: " + summary.getContainersFoundCount());
System.out.println("# of containers skipped: " + summary.getContainersSkippedCount());
System.out.println("# of tests found: " + summary.getTestsFoundCount());
System.out.println("# of tests skipped: " + summary.getTestsSkippedCount());
}
void happyPath() {
assertTrue(true); // Do useful stuff here
}
}
Средство запуска не находит никаких тестов для запуска, хотя я специально выбрал метод "happyPath". Я попытался аннотировать метод happyPath()
с помощью @Test
, и это, кажется, работает, но у него также есть нежелательный побочный эффект, который метод выполняется, если я запускаю все тесты в этом пакете, либо из gradle, либо изнутри IDE. По сути, я хочу, чтобы мои тестовые методы вызывались с помощью инфраструктуры JUnit5, но только когда я вручную запускаю основной метод в классе. Я думал о некоторых пользовательских аннотациях или о реализации какого-то интерфейса, который мог бы быть подхвачен тестовым движком, но еще не пошел по этому пути. Я предполагаю, что есть какой-то простой способ выполнить то, что я пытаюсь сделать. Благодарю.