Иногда, когда я запускаю тест на jenkins с выбором логического тега ИЛИ (karate.options = "- tags @ vld, @ command-состав"), тесты выполняются до конца, но никогда не выйдут из
Results results = Runner.parallel(getClass(),5 , karateOutputPath);
Это определенно проблема, связанная с каратэ и Дженкинсом, потому что при выполнении на локальной машине проблема никогда не возникала.
Также, когда теги выбираются раздельно (например,. "--Tags @vld"или" --tags @ command-состав ") проблема не возникает.Даже на Дженкинсе.
Это мой параллельный класс бегунов, используемый для параллельного выполнения тестов.Я добавил несколько результатов отладки журналирования, чтобы уточнить, где выполняется выполнение в бесконечном цикле.
Выполнение не выходит из выполнения теста:
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();
}
}
Я также играл arround с количеством используемых потоков и параллельным выполнением == false.Кажется, ничто не помогает.
Я также сравнил папку вывода surefire-reports между локальной версией и сборкой jenkins.Все достоверные отчеты о выполненных функциях есть, но на jenkins отсутствуют results-json.txt и timeline.html .
Итак, есть ли кто-нибудь там?кто также испытывал такое поведение?Или у кого-то есть идеи, как отладить или хотя бы как-то сузить эту проблему?
Помощь очень ценится!:)
Каратэ-версия: 0.9.2 (последняя версия)