У меня есть: - Огурец с безмятежностью - Java / Junit - плагин maven-assembly-*
net.serenity-bdd: 2.0.81 плагин maven-assembly: 3.1.1
Мне нужно подготовить исполняемый файл JAR для запуска тестов с аннотацией, например: @jartest
Файлы проекта, расположенные в scr-> test
- Файлы функций: src-> resources-> prj->регрессия
- StepDefinition: src-> java-> company.name-> prj.qa-> steps_v2
- TestRunner вызов "JarRunner". Находится в src-> java-> runner
@RunWith(CucumberWithSerenity.class)
@CucumberOptions(
plugin = {"pretty"},
features="./classes"
,glue = {"./classes"}
,tags = {"@jartest"}
)
public class JarRunner {
public static void main(String[] args) {
System.out.println("TestRunner...");
JUnitCore junit = new org.junit.runner.JUnitCore() ;
try {
throw new Exception();
} catch(Exception e) {
// code to handle the exception
Result result = junit.run(JarRunner.class);
for (Failure failure : result.getFailures())
{
System.out.println(failure.toString());
}
}
}
}
pom.xml
плагин apache для захвата всех Feature / stepDefinitionClass в одной папке после сборки
<resources>
<resource>
<directory>src/test/resources/msp/regression</directory>
</resource>
<resource>
<directory>src/test/java/de/telekom/msp/qa/run/steps_v2</directory>
</resource>
<resource>
<directory>src/test/java/de/telekom/msp/qa/adbc/steps</directory>
</resource>
</resources>
JarRunner, определенный в POM
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>runner.JarRunner</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
Так что, если я запускаю JarRunner с обновленным клеем, например glue = {"company.name.prj.qa.run.steps_v2"} подIntelliJ IDEA все в порядке.
Если используется cmd mvn clean verify -Dtags = "" все в порядке
Если я использую файл jar
Ошибка: вы можете реализовать отсутствующиешаги с фрагментами ниже (затем шаги моего теста)
Целевая папка с файлом jar содержит подпапку: "classes". В этой папке расположены все функции и все классы stepsDef.
Файлы объектов успешно обнаруживаются в этой папке, но StepsDefinition - нет.
Было много попыток сменить клей в бегуне: - glue = {"company.name.prj.qa.run.steps_v2"}
Ничего не поделаешь: класс StepsDefinition не привязан ...