Тесты JUnit пройдены, но PIT говорит, что набор не зеленый

При попытке запустить мутационный тест PIT я получаю следующую ошибку:

Сбой mutationCoverage: все тесты не прошли без мутации при расчете покрытия линии. Мутационное тестирование требует зеленого набора.

Тесты выполняются очень хорошо, когда я делаю обычную тестовую сборку, но во время фазы мутационных тестов они, предположительно, не проходят, но никаких подробностей относительно того, почему. Я рассмотрел причины, перечисленные в FAQ по тестированию PIT, но до сих пор не понимаю, что может быть не так.

Я старался:

  • добавление опции -Dthreads=1 к правилу любой проблемы многопоточности
  • не удалось найти какие-либо системные свойства, уникальные для пары тестов, которые не проходят
  • тесты не игнорируются при нормальных пробегах

Какие еще вещи я должен попробовать? Или другие способы отладки того, что здесь происходит?

1 ответ

Решение

Распространенными причинами неудачных испытаний на этапе охвата являются

  1. Тесты PIT Picking не включены / исключены из обычного теста конфигурации
  2. Тесты полагаются на переменную среды или другое свойство, установленное в конфигурации теста, но не заданное в конфигурации pitest
  3. Тесты имеют скрытую зависимость порядка, которая не выявляется во время обычного запуска теста
  4. PIT не нравится что-то в вашем техническом стеке - возможно, тестер JUnit

Похоже, что вы устранили 1 и 2. так что оставляет 3 и 4.

Зависимости порядка тестирования могут быть трудно обнаружить. Если ответ "да" на любой из них, у вас может быть один.

  • Ваша кодовая база включает изменяемое статическое состояние? (например, в одиночных играх)
  • Ваши тесты попадают в базу данных (в памяти или иным образом), где состояние может сохраняться между тестами?
  • Ваши тесты изменяют файлы на диске?

Вероятно, есть и много других причин, не перечисленных выше.

Если вы уверены, что зависимости порядка в вашей кодовой базе невозможны, это оставляет проблему с этими конкретными тестами.

Трудно догадаться, что это может быть без некоторого кода. Можете ли вы опубликовать упрощенную версию теста, который все еще не проходит?

Другие вопросы по тегам