Код: Выделить всё
src
└── main
└── java
└── tests
├── functional
│ ├── TestA
│ └── TestB
├── verification
│ └── TestC
└── TestsRunner.java
target
├── classes
├── lib
│ ├── depA
│ ├── depB
│ └── ..
├── app.jar
└── ..
Код: Выделить всё
package tests;
import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;
import java.util.concurrent.Callable;
@Slf4j
@CommandLine.Command(name = "run", mixinStandardHelpOptions = true, version = "1.0", description = "Run tests")
public class TestsRunner implements Callable {
@CommandLine.Option(names = {"-s", "--suite"}, required = true, description = "Suite name")
private String testSuiteName;
@CommandLine.Option(names = {"-o", "--output"}, required = true, description = "Test reports output directory")
private String reportOutputDir;
public static void main(String[] args) {
int exitCode = new CommandLine(new TestsRunner()).execute(args);
System.exit(exitCode);
}
@Override
public Integer call() throws Exception {
var basePackage = switch (testSuiteName) {
case "functional" -> "tests.functional";
case "verification" -> "tests.verification";
default -> throw new RuntimeException("Unknown tests suite: " + testSuiteName);
};
var runner = Junit5ServiceTestsRunner.builder()
.classNamePattern(".*Test")
.classNamePattern(".*Tests")
.basePackage(basePackage)
.reportOutputDir(reportOutputDir)
.build();
var result = runner.run();
return result.isSuccess() ? 0 : 1;
}
}
Код: Выделить всё
org.apache.maven.plugins
maven-jar-plugin
3.2.0
app
true
tests.TestsRunner
lib
false
.
Запуск приложения через IntelliJ работает, выходные данные содержат результаты выполненных тестов (обратите внимание на 1 успешный тест):
Код: Выделить всё
Test run finished after 4246 ms
[ 3 containers found ]
[ 0 containers skipped ]
[ 3 containers started ]
[ 0 containers aborted ]
[ 3 containers successful ]
[ 0 containers failed ]
[ 1 tests found ]
[ 0 tests skipped ]
[ 1 tests started ]
[ 0 tests aborted ]
[ 1 tests successful ]
[ 0 tests failed ]
Код: Выделить всё
"C:\Program Files\Java\jdk-17.0.8\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.1.3\lib\idea_rt.jar=65474:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\xxx\Documents\GitHub\my-project\tests\target\classes;C:\Users\xxx\.m2\repository\info\picocli\picocli\4.7.1\picocli-4.7.1.jar;C:\Users\xxx\.m2\repository\com\core\testing\mock-servers-junit5\1.1.0\mock-servers-junit5-1.1.0.jar ..........(all other dependencies) tests.TestsRunner -s verification -o report
Код: Выделить всё
java -jar app.jar -o ${JUNIT_OUTPUT_FOLDER} -s ${SUITE_NAME}
Код: Выделить всё
Test run finished after 62 ms
[ 1 containers found ]
[ 0 containers skipped ]
[ 1 containers started ]
[ 0 containers aborted ]
[ 1 containers successful ]
[ 0 containers failed ]
[ 0 tests found ]
[ 0 tests skipped ]
[ 0 tests started ]
[ 0 tests aborted ]
[ 0 tests successful ]
[ 0 tests failed ]
Код: Выделить всё
@TestTemplate
@ExtendWith(SomeClass.class)
Дело в том, что мои проекты генерируются на основе шаблона. Все мои услуги структурированы и ведут себя одинаково. Это единственный сервис, с которым я столкнулся с этой проблемой.
Я думал, что это как-то связано с путем к классам, но в моем app.jar я вижу, что все в порядке. , манифест выглядит нормально, в нем есть все зависимости, основной класс правильный и тестовые классы присутствуют. Но тем не менее, я попытался изменить java jar на java cp и указать каталоги пути к классам, а также передать основной класс -
Код: Выделить всё
java -cp "app.jar:lib/*:classes" tests.TestsRunner -s verification -o reports
Любое предложение будет отличным, спасибо.
Подробнее здесь: https://stackoverflow.com/questions/784 ... d-intellij