有时,当我对带有逻辑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进行了分析。似乎没有任何帮助。
我还比较了本地运行和jenkins构建之间的surefire-reports输出文件夹。所有已执行功能的surefire报告都存在,但是在詹金斯上,缺少 results-json.txt 和 timeline.html 。
那么,有没有人也经历过这种行为?还是有人对如何调试或至少以某种方式缩小问题范围有了进一步的想法?
非常感谢您的帮助! :)
空手道版本:0.9.2(最新)
答案 0 :(得分:2)
具有两个在运行时分别具有@ feature1和@ feature2标记的功能
mvn clean install -Dkarate.options="--tags @feature1,@feature2"
两个功能都被播放。那不是AND标记选择,而是OR标记选择。 与
mvn clean install -Dkarate.options="--tags @feature1 --tags @feature2"
两个功能均未播放。那是一个AND选择。
从那开始,Appart,您是否尝试过创建一个最小的空手道项目,该项目仅具有几个仅需执行几个简单步骤的功能,然后在Jenkins上启动它?