我有: -宁静的黄瓜 -Java / Junit -maven-assembly-plugin
net.serenity-bdd:2.0.81 maven-assembly-plugin:3.1.1
我需要准备可执行的jar文件以进行带有注释的运行测试,例如:@jartest
位于scr-> test中的项目文件
@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>
在POM中定义的JarRunner
<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,例如 胶= {“ company.name.prj.qa.run.steps_v2”} 在IntelliJ IDEA下一切正常。
如果使用了cmd mvn clean验证-Dtags =“” 一切都很好
如果我使用jar文件
错误:您可以使用下面的代码片段执行缺少的步骤(然后 我的测试步骤)
带有jar文件的目标文件夹包含子文件夹“ classes”。在此文件夹中,找到所有要素和所有stepDef类。
功能文件成功在此文件夹中检测到,但StepsDefinition-未检测到。
许多人尝试更换流道中的胶水: -胶水= {“ company.name.prj.qa.run.steps_v2”}
胶水= {“ ./classes”}
具有绝对路径的胶水
胶水= {“ classpath:classes”}
等...
没有帮助:StepsDefinition类未绑定...