Тесты JUnit пройдены, но PIT говорит, что набор не зеленый
При попытке запустить мутационный тест PIT я получаю следующую ошибку:
Сбой mutationCoverage: все тесты не прошли без мутации при расчете покрытия линии. Мутационное тестирование требует зеленого набора.
Тесты выполняются очень хорошо, когда я делаю обычную тестовую сборку, но во время фазы мутационных тестов они, предположительно, не проходят, но никаких подробностей относительно того, почему. Я рассмотрел причины, перечисленные в FAQ по тестированию PIT, но до сих пор не понимаю, что может быть не так.
Я старался:
- добавление опции -Dthreads=1 к правилу любой проблемы многопоточности
- не удалось найти какие-либо системные свойства, уникальные для пары тестов, которые не проходят
- тесты не игнорируются при нормальных пробегах
Какие еще вещи я должен попробовать? Или другие способы отладки того, что здесь происходит?
1 ответ
Распространенными причинами неудачных испытаний на этапе охвата являются
- Тесты PIT Picking не включены / исключены из обычного теста конфигурации
- Тесты полагаются на переменную среды или другое свойство, установленное в конфигурации теста, но не заданное в конфигурации pitest
- Тесты имеют скрытую зависимость порядка, которая не выявляется во время обычного запуска теста
- PIT не нравится что-то в вашем техническом стеке - возможно, тестер JUnit
Похоже, что вы устранили 1 и 2. так что оставляет 3 и 4.
Зависимости порядка тестирования могут быть трудно обнаружить. Если ответ "да" на любой из них, у вас может быть один.
- Ваша кодовая база включает изменяемое статическое состояние? (например, в одиночных играх)
- Ваши тесты попадают в базу данных (в памяти или иным образом), где состояние может сохраняться между тестами?
- Ваши тесты изменяют файлы на диске?
Вероятно, есть и много других причин, не перечисленных выше.
Если вы уверены, что зависимости порядка в вашей кодовой базе невозможны, это оставляет проблему с этими конкретными тестами.
Трудно догадаться, что это может быть без некоторого кода. Можете ли вы опубликовать упрощенную версию теста, который все еще не проходит?