有时当我在jenkins上运行带有逻辑OR标签选择的测试(karate.options =“ - tags @ vld,@ command-composition”)时,测试会在结束时执行,但永远不会退出
Results results = Runner.parallel(getClass(),5 , karateOutputPath);
这肯定是空手道和詹金斯的问题,因为当在本地机器上执行时,问题从未发生过。
此外,当单独选择标签时(例如“--tags @vld”或“--tags @ command-composition”),问题不会发生。甚至在詹金斯身上。
这是我用于并行执行测试的并行运行器类。我添加了一些日志记录调试输出,以阐明执行运行到无限循环的位置。
执行没有退出测试执行:
Results results = Runner.parallel(getClass(),5 , karateOutputPath);
因此(包括)之后的一切
logger.debug("DEBUG-LOG: AFTER TEST - BEFORE REPORT GENERATION");
从未被执行过。
@KarateOptions(tags = {"~@ignore"})
public class ParallelRunner {
private static final Logger logger = LoggerFactory.getLogger("com.intuit.karate");
@Test
public void testParallel() throws IOException {
// RESET LAST USED ICCID
Helper.resetLastIccid();
String outputPath = "build";
String karateOutputPath = outputPath + "/surefire-reports";
logger.debug("DEBUG-LOG: BEFORE TEST");
Results results = Runner.parallel(getClass(),5 , karateOutputPath);
logger.debug("DEBUG-LOG: AFTER TEST - BEFORE REPORT GENERATION");
generateReport(karateOutputPath);
logger.debug("DEBUG-LOG: AFTER GEN REPORT");
assertTrue("scenarios failed", results.getFailCount() == 0);
}
private static void generateReport(String karateOutputPath) {
logger.debug("DEBUG-LOG: IN GEN REPORT");
Collection<File> jsonFiles = FileUtils.listFiles(new File(karateOutputPath), new String[] {"json"}, true);
List<String> jsonPaths = new ArrayList(jsonFiles.size());
jsonFiles.forEach(file -> jsonPaths.add(file.getAbsolutePath()));
Configuration config = new Configuration(new File("build"), "MH Conan Mobile Systemtest");
ReportBuilder reportBuilder = new ReportBuilder(jsonPaths, config);
reportBuilder.generateReports();
}
}
我还使用已使用线程的数量和并行执行== false来玩arround。似乎没有任何帮助。
我还比较了本地运行和jenkins构建之间的surefire-reports输出文件夹。有关已执行功能的所有surefire报告都在那里,但在jenkins上,结果-json.txt和timeline.html缺失。
那么,是否还有人经历过这种行为?或者有进一步的想法如何调试或至少以某种方式缩小这个问题?
非常感谢帮助! :)
空手道版本:0.9.2(最新)
有两个功能分别具有@ feature1和@ feature2标记,运行时
mvn clean install -Dkarate.options="--tags @feature1,@feature2"
两个功能都播放。这不是AND标签选择,而是OR标签选择。同
mvn clean install -Dkarate.options="--tags @feature1 --tags @feature2"
这两个功能都没有播放。这是AND选择。
除此之外,你有没有尝试创建一个最小的空手道项目,只有几个功能只是做几个简单的步骤,并在Jenkins上启动它?