Помеченный тест каратэ не заканчивается на Дженкинс - PullRequest
2 голосов
/ 30 апреля 2019

Иногда, когда я запускаю тест на 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 (последняя версия)

1 Ответ

2 голосов
/ 30 апреля 2019

С двумя функциями, которые соответственно имеют теги @ feature1 и @ feature2, при запуске

mvn clean install -Dkarate.options="--tags @feature1,@feature2"

Обе функции воспроизводятся.Это не выбор тега AND, а выбор тега OR.С

mvn clean install -Dkarate.options="--tags @feature1 --tags @feature2"

Ни одна из двух функций не воспроизводится.Это выбор «И».

Судя по всему, вы пытались создать минимальный проект по каратэ с парой функций, которые выполняют всего несколько простых шагов, и запустить его на Jenkins?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...