Coverage врет

Всё про тестирование в Yii 2.0
Ответить
Rheola
Сообщения: 3
Зарегистрирован: 2013.02.28, 16:17

Coverage врет

Сообщение Rheola » 2019.12.03, 09:38

Добрый день.

Есть вопрос по поводу  coverage.

Оно у меня врет, и показывает куда лучше, чем на самом деле.

Вот будет несколько правил валидации.

Код: Выделить всё

    public function rules()
    {
        return [
            [['admin_id'], 'default', 'value' => null],
            [['admin_id'], 'integer'],
            [['page', 'action', 'element_id'], 'string', 'max' => 255],
        ];
    }
Оно увидит достаточно одного теста на проверку admin_id integer

А остальные на длину можно не писать: coverage  хватит одной строки из массива. И покажет 100 процентное покрытие

Изображение
Конфиг app/tests/unit.suite.yml простой

Код: Выделить всё

coverage:
  enabled: true
  include:
    - /models/
    

Аватара пользователя
ElisDN
Сообщения: 5430
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Coverage врет

Сообщение ElisDN » 2019.12.03, 09:57

Coverage лишь засекает то, какой код выполнился за время работы тестов. Метод rules – это всего лишь метод, возвращающий массив. Он выполнился и весь массив вернул.

Rheola
Сообщения: 3
Зарегистрирован: 2013.02.28, 16:17

Re: Coverage врет

Сообщение Rheola » 2019.12.05, 22:45

Это получается что только переписывать (дублировать) все правила валидации на свои, которые есть?

Хотя если в теории, даже если 100% покрыть, то все равно баги могут быть, потому что не написали все валидации. А новый тест и новые валидации, который напишут для проверки, скорее всего появится, только после того, как баг обнаружат.

Аватара пользователя
ElisDN
Сообщения: 5430
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Coverage врет

Сообщение ElisDN » 2019.12.06, 09:18

Нет, просто пишите тесты, которые считаете нужными для себя. Изучайте покрытие своего кода, а не фреймворковских методов вроде rules(). Все автоинструменты по оценке кода примитивные и искусственного интеллекта у них нет.

Ответить