Как узнать, прав ли xdebug?

Я провожу некоторые тесты, и некоторые отчеты не имеют смысла, например:

https://stackru.com/images/dc3b1c6e6f1ab035ae410f67f8fb2c18f70e ae1c.png

https://stackru.com/images/5e345f28d5df36ae8c74590d9acfff3e a0c01e a4.png

У меня также есть другой пример: почему xdebug помечает 587 и 588 как невыполненные и 589 как выполненные?

2 ответа

Решение

Если у вас нет теста, где switch не соответствует, тогда покрытие xdebug является правильным.

Если выполнение только когда-либо возвращается из switch в тестах, то конец метода (неявное возвращение void) никогда не достигается / не выполняется и как таковой не рассматривается.

Вы можете быть уверены, что в это время здесь нет проблем, но со временем это становится хрупким. Что, если вы добавите третью возможность, но забудете об этом? И так далее.

Покрытие делает свою работу здесь - оно указывает (потенциальный) путь кода, который не тестируется.

Посмотрев на приведенный вами пример, xdebug на самом деле "прав", поскольку return все операторы находятся внутри переключателя, вы никогда не дойдете до последней строки этой функции.

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

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