Итак, мутант сбежал. Что теперь?

Мне только что удалось впервые запустить тестирование на мутации. Моя обычная среда тестирования - Codeception, но на момент написания она несовместима с тестированием мутаций (хотя я считаю, что над ней ведется работа, и это не за горами). Я использую PHPUnit и Infection, и ни один из них не кажется простым в использовании.

Мой набор тестов произвел десять мутантов. Девять человек погибли, один скрылся. Однако я не знаю, какую часть кода или тестов нужно улучшить, чтобы убить последнего мутанта.

Как получить информацию о том, какой код позволил мутанту сбежать?

1 ответ

В этом блоге я нашел то, что не смог найти в документации Infection: результаты сохраняются вinfection.log.

Файл журнала выглядит так:

Escaped mutants:
================


1) <full-path-to-source-file>.php:7    [M] ProtectedVisibility

--- Original
+++ New
@@ @@
 use stdClass;
 trait HiddenValue
 {
-    protected function hidden_value($name = null, $value = null)
+    private function hidden_value($name = null, $value = null)
     {
         static $data = [];
         $keys = array_map(function ($item) {

Timed Out mutants:
==================

Not Covered mutants:
====================

В нем говорится, что мутация изменила protected видимость для privateи что в результате ни одно испытание не провалилось. Если это важно, теперь я могу либо изменить код, либо написать другой тест, чтобы охватить этот случай.

Теперь, когда я нашел это, я поискал на веб-сайте Infection по запросу infection.log и нашел --show-mutations или -s который будет выводить экранированные мутанты на консоль во время работы.

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