Я реализовал собственный класс TestEngine
, который может обнаруживать и запускать модульные тесты из *.csv
файлов (не java классов), проверяя FileSelector
в EngineDiscoveryRequest
от Junit 5.
Я могу без проблем запускать эти тесты, используя ConsoleLauncher
, предоставленный командой Junit, вызывая org.junit.platform.console.ConsoleLauncher -f build/resources/test/testfile_1.csv
(это вызывается из задачи gradle, потому что gradle не поддерживает тестирование на основе ресурсов , но здесь это не имеет значения).
Теперь я пытаюсь запустить те же тесты, используя тот же пользовательский механизм тестирования, но с использованием maven и плагина surefire вместо средства запуска консоли. Мой текущий pom.xml
выглядит следующим образом (соответствующая часть):
<project>
<dependencies>
<dependency>
<groupId>my_custom_test_engine</groupId>
<artifactId>custom_test_engine</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-engine</artifactId>
<version>1.7.0-M1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-console</artifactId>
<version>1.7.0-M1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
</plugins>
</build>
</project>
К сожалению, surefire:test
, похоже, даже не вызывает мою тестовую систему для обнаружения и просто заканчивается:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.626 s
[INFO] Finished at: 2020-06-20T17:00:01+02:00
[INFO] ------------------------------------------------------------------------
У меня нет тестовых классов в моей папке src
, только один тестовый файл под resources/testfile_1.csv
.
Поддерживает ли surefire даже файловое тестирование с помощью Junit 5? Если да, то как я могу заставить Surefire вызывать мой собственный механизм тестирования для обнаружения тестов?
- Обновление
Часть обнаружения в моей реализации TestEngine
выглядит примерно так (только соответствующая часть показано):
public class MyTestEngine implements TestEngine {
@Override
public TestDescriptor discover(EngineDiscoveryRequest discoveryRequest, UniqueId uniqueId) {
EngineDescriptor engineDescriptor = new EngineDescriptor(uniqueId, name);
logger.debug("Discovering tests");
discoveryRequest.getSelectorsByType(FileSelector.class).forEach(selector -> {
logger.debug("Discovered: {}", selector.getFile().getAbsolutePath());
engineDescriptor.addChild(new TestDescriptor (engineDescriptor.getUniqueId(), selector.getFile().getName()));
});
}
- Обновление 2 Мои тестовые файлы находятся в src/test/resources
.