PITest зависает при запуске теста

Я пытаюсь запустить PITest на основной версии light4j (https://github.com/networknt/light-4j), проект, который я выбрал более или менее случайно, чтобы опробовать PITest на реальном коде.

Тест прошел нормально на большинстве модулей, за исключением «cient» модуля light4j. При работе

mvn -X test org.pitest:pitest-maven:mutationCoverage

В папке light-4j/client нормальный модульный тест завершается (все тесты в порядке, 3 пропущены), но PITest, похоже, не генерирует и не выполняет мутации. Последние сообщения

[INFO] Adding org.pitest:pitest to SUT classpath
[INFO] Mutating from /Users/jan/dev/inno/light-4j/client/target/classes
[INFO] Defaulting target classes to match packages in build directory
/-\|/-\|/-\|/-\|/-stderr  : WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.xnio.nio.NioXnio$2 (file:/Users/jan/.m2/repository/org/jboss/xnio/xnio-nio/3.3.8.Final/xnio-nio-3.3.8.Final.jar) to constructor sun.nio.ch.KQueueSelectorstderr  : Provider()
WARNING: Please consider reporting this to the maintainers of org.xnio.nio.NioXnio$2
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in astderr  :  future release

И ничего не происходит после этого.

Обычная сборка light4j завершается успешно.

В чем может быть проблема?

[редактирование от 5 февраля 2020 г.: я разветвил репозиторий light4j: https://github.com/jvermeir/light-4j Затем я выполнил обычную сборку mvn clean install, поэтому все артефакты находятся в моем локальном репозитории maven. Затем я изменил pom.xml на корневом уровне проекта light4j, добавив

<plugin>
    <groupId>org.pitest</groupId>
    <artifactId>pitest-maven</artifactId>
    <version>1.4.10</version>
    <dependencies>
<!--                    <dependency>-->
<!--                        <groupId>org.pitest</groupId>-->
<!--                        <artifactId>pitest-junit5-plugin</artifactId>-->
<!--                        <version>0.10</version>-->
<!--                    </dependency>-->
    </dependencies>
</plugin>

в разделе сборки Наконец, я выполнил тесты с включенным PiTest из папки клиента: mvn -X test org.pitest:pitest-maven:mutationCoverage > ../buildlog.txt В результате появился файл build.txt, а также пара строк, которые отображаются в терминале:

17:10:30 PIT >> INFO : Verbose logging is disabled. If you encounter a problem, please enable it before reporting an issue.
17:10:30 PIT >> INFO : Sending 147 test classes to minion
17:10:30 PIT >> INFO : Sent tests to minion
17:10:30 PIT >> INFO : MINION : 17:10:30 PIT >> INFO : Checking environment

17:10:32 PIT >> INFO : MINION : 17:10:32 PIT >> INFO : Found  18 tests

17:10:32 PIT >> INFO : MINION : 17:10:32 PIT >> INFO : Dependency analysis reduced number of potential tests by 0

17:10:32 PIT >> INFO : MINION : 17:10:32 PIT >> INFO : 18 tests received

17:10:33 PIT >> INFO : MINION : WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.powermock.reflect.internal.WhiteboxImpl (file:/Users/jan/.m2/repository/org/powermock/powermock-reflect/2.0.2/powermock-reflect-2.0.2.jar) to method java
17:10:33 PIT >> INFO : MINION : .lang.Object.clone()
WARNING: Please consider reporting this to the maintainers of org.powermock.reflect.internal.WhiteboxImpl
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access
17:10:33 PIT >> INFO : MINION :  operations will be denied in a future release

17:11:24 PIT >> INFO : MINION : 17:11:24 PIT >> WARNING : More threads at end of test (46) com.networknt.client.Http2ClientTest than start. (5)

17:11:24 PIT >> INFO : Calculated coverage in 54 seconds.
17:11:25 PIT >> INFO : Created  92 mutation test units

Конец build.txt выглядит так:

[INFO] Adding org.pitest:pitest to SUT classpath
[INFO] Mutating from /Users/jan/dev/inno/light4jfork/light-4j/client/target/classes
[INFO] Defaulting target classes to match packages in build directory
-stderr  : WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.xnio.nio.NioXnio$2 (file:/Users/jan/.m2/repository/org/jboss/xnio/xnio-nio/3.3.8.Final/xnio-nio-3.3.8.Final.jar) to constructor sun.nio.ch.KQueueSelectorstderr  : Provider()
WARNING: Please consider reporting this to the maintainers of org.xnio.nio.NioXnio$2
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in astderr  :  future release

person Jan Vermeir    schedule 22.12.2019    source источник


Ответы (1)


Я пробовал то же самое, и он останавливается на клиентском модуле. Мне просто интересно, должны ли мы добавить плагин pitest-maven в pom.xml

[INFO] Mutating from /home/steve/networknt/light-4j/client/target/classes
[INFO] Defaulting target classes to match packages in build directory
7:35:54 p.m. PIT >> INFO : Verbose logging is disabled. If you encounter a problem, please enable it before reporting an issue.
7:35:54 p.m. PIT >> INFO : Sending 147 test classes to minion
7:35:54 p.m. PIT >> INFO : Sent tests to minion
7:35:54 p.m. PIT >> INFO : MINION : 7:35:54 p.m. PIT >> INFO : Checking environment

7:35:55 p.m. PIT >> INFO : MINION : 7:35:55 p.m. PIT >> INFO : Found  18 tests

7:35:55 p.m. PIT >> INFO : MINION : 7:35:55 p.m. PIT >> INFO : Dependency analysis reduced number of potential tests by 0

7:35:55 p.m. PIT >> INFO : MINION : 7:35:55 p.m. PIT >> INFO : 18 tests received

7:35:56 p.m. PIT >> INFO : MINION : WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.powermock.reflect.internal.WhiteboxImpl (file:/home/steve/.m2/repository/org/powermock/powermock-reflect/2.0.2/powermock-reflect-2.0.2.jar) to method jav
7:35:56 p.m. PIT >> INFO : MINION : a.lang.Object.clone()
WARNING: Please consider reporting this to the maintainers of org.powermock.reflect.internal.WhiteboxImpl
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal acces
7:35:56 p.m. PIT >> INFO : MINION : s operations will be denied in a future release

person Steve Hu    schedule 04.02.2020
comment
спасибо за попытку. Моя вторая попытка PiTest также не удалась, см. обновленный вопрос выше. Я подумал, что, может быть, тест клиента просто занимает слишком много времени? Я разветвил репозиторий здесь github.com/jvermeir/light-4j, чтобы мы могли сделать некоторые эксперименты. - person Jan Vermeir; 05.02.2020
comment
При тестировании клиента нам необходимо проверить срок действия и время токена OAuth 2.0. Таким образом, существует множество параллельных процессов в состоянии ожидания. Вот почему это занимает много времени. Есть еще несколько интеграционных тестов, которые не выполняются в обычном процессе сборки, чтобы гарантировать отсутствие проблем с многопоточностью с одновременными запросами. HTTP/2 более сложен, поскольку допускает мультиплексирование, и это является огромным преимуществом по сравнению с HTTP/1.1. Можно ли как-нибудь пропустить этот модуль? - person Steve Hu; 06.02.2020
comment
Я боялся, что это будет проблемой. Думаю, в таких случаях я мог бы запустить PiTest для каждого подмодуля и пропустить те, которые занимают слишком много времени. - person Jan Vermeir; 07.02.2020