Когда Питест не может найти тестовые классы
Кажется, это довольно распространенная проблема, и я лично наткнулся на нее хотя бы пару раз.
Некоторые из основных причин:
- Забыв запустить тест (и, таким образом, создать тестовые классы) перед запуском pitest: Pitest не может обнаружить класс теста, PITest не может найти тесты.
- Miss-сконфигурировано
targetTests
: питест не находит тестов - Неправильное использование
assert
Ключевое слово: Питест не может найти тест джунит
Однако сегодня я наткнулся на новый случай из 0 найденных тестов, который я изо всех сил пытаюсь решить. Давайте рассмотрим этот проект: https://github.com/bonnyfone/vectalign.
Это небольшой проект, включающий только один тестовый класс:
src
|
+- main
| |
| ...
|
+- test
|
+- java
|
+- VectAlignTest.java
Я добавил питест к pom.xml
:
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>1.3.2</version>
</plugin>
Я запускаю команду mvn clean test org.pitest:pitest-maven:mutationCoverage
, Несмотря на то, что тест выполняется нормально, Питс по какой-то причине не может их найти:
12:23:16 PM PIT >> INFO : MINION : 12:23:16 PM PIT >> INFO : Found 0 tests
...
================================================================================
- Statistics
================================================================================
>> Generated 910 mutations Killed 0 (0%)
>> Ran 0 tests (0 tests per mutation)
Вы можете найти полный pom.xml
здесь: https://pastebin.com/F28ZpcMk
И вот полный вывод для mvn clean test org.pitest:pitest-maven:mutationCoverage
: https://pastebin.com/tWHgq43a
Теперь мой вопрос: что не так в этом конкретном случае? Как Питес определяет, какие тестовые классы?
Ваша помощь будет высоко ценится:)
2 ответа
Я просто добавил решение по этой ссылке:
Подводя итог, PITest не нашел мои классы или тестовые классы, потому что у меня их не было в пакете. Как только я положил их в пакет, все отлично заработало. Я подозреваю, что вы также можете указать класс и местоположение тестового класса вручную.
Я сталкиваюсь с той же проблемой. Для меня указание точных тестовых пакетов помогло. В вашем случае, возможно, вы могли бы добавить:
<configuration>
<targetTests>
<param>VectAlignTest*</param>
</targetTests>
</configuration>
Но, конечно, это довольно грязный обходной путь. Может быть, кто-то знает причину проблемы.