Вывод консоли в параллельных тестах показан в другом дереве тестов, чем было запущено в

Я использую TestNG 6.8.8 в Intellij IDEA 13.4, logback 1.1.2. У меня есть куча тестовых классов и есть такая программа запуска xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Example" parallel="tests" thread-count="3">

<test name="test1">
    <classes>
        <class name="ExampleClass1"/>
    </classes>
</test>
<test name="test2">
    <classes>
        <class name="ExampleClass2"/>
    </classes>
</test>
<test name="test3">
    <classes>
        <class name="ExampleClass3"/>
    </classes>
</test>

Кроме того, каждый класс имеет метку MDC для разных тестовых классов:

 MDC.put("testName", "ExampleClass1");

и logback.xml:

<configuration>

<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} %C [%X{testName}]  - %m%n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
</appender>

<root level="debug">
    <appender-ref ref="console" />
</root>

</configuration>

когда я меняю xml runner на thread-count="1", все в порядке - консоль регистрирует каждый тест в своем собственном узле дерева.

Но когда я запускаю TestNG с числом потоков = "3" или более, некоторые записи журнала отображаются не в их собственном узле дерева тестов, а в некоторых других.

например, вывод консоли в узле дерева для теста "test1" может быть таким:

11:53:28.388 ExampleClass1 [ExampleClass1]  - logEntry
11:53:28.388 ExampleClass2 [ExampleClass2]  - logEntry
11:53:29.800 ExampleClass1 [ExampleClass1]  - logEntry2
11:53:29.958 ExampleClass2 [ExampleClass2]  - logEntry2

Таким образом, запись журнала класса ExampleClass2 показана как результат выполнения ExampleClass1, а консольный вывод в узле дерева для теста "test2" пуст. Кроме того, экспорт вывода консоли в xml показывает, что некоторые значения журнала относятся к разным результатам теста.

Как Intellij решает для каждой строки вывода, за которую отвечает тест? Есть ли способ заставить Intellij IDEA каким-то образом проверить, за какую запись в журнале отвечает какой класс по отметке MDC? или есть ли другой способ убедиться, что вывод консоли находится на своем месте в дереве тестов?


person Nodonutsforyou    schedule 19.09.2014    source источник


Ответы (1)


Это известная ошибка. Проголосуйте и, может быть, даже поднимите его.

Прогонщик тестов IntelliJ IDEA-73260 смешивает выходные данные разных тестов при использовании параллельного TestNG

person Meo    schedule 19.09.2014