Что такое .phpunit.result.cache

#laravel #unit-testing #laravel-5 #phpunit

#php #laravel #модульное тестирование #laravel-5 #phpunit

Вопрос:

Когда я запускаю тесты с PHPUnit для нового пакета, который я создаю для Laravel, он генерирует файл .phpunit.result.cache .

Что с этим делать? Добавлять ли мне это в мой .gitignore файл или нет?

Я использую PHPUnit 8.0.4

Ответ №1:

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

Также неплохо добавить файл кэша .phpunit.result.cache в ваш файл .gitignore, чтобы в конечном итоге он не был зафиксирован в вашем репозитории.

https://laravel-news.com/tips-to-speed-up-phpunit-tests

Если вы предпочитаете не генерировать файл, вы можете запустить phpunit с --do-not-cache-result опцией, как указано @Slack Undertow в комментариях. Это может потребоваться, например, при запуске тестов как части конвейера сборки. Или, как указал @codekandis, та же опция доступна в качестве cacheResult атрибута в phpunit.xml .

Комментарии:

1. @SlackUndertow github.com/sebastianbergmann/phpunit/issues /… «[…] В основном кэш предназначен для ускорения при многократном тестировании одной и той же коллекции […]» Поэтому решение отключить его должно приниматься исходя из размера тестовой коллекции и предполагаемых итераций тестирования этой коллекции. Но: «[…] Например, при использовании кнопок воспроизведения / паузы в PhpStorm кэширование этого результата не имеет смысла. В дополнение к IDE, имеющей свою собственную опцию «запустить неудачные тесты снова / сначала». […]» Кэш в основном полезен в средах, отличных от IDE.

Ответ №2:

Вы также можете изменить расположение этого файла, отредактировав phpunit.xml :

 <phpunit 
    ...
    cacheResultFile="../.temp/fs_cache/.phpunit.result.cache"
>
  

Или полностью отключить его с помощью

 <phpunit 
    ...
    cacheResult ="false"
>
  

Ответ №3:

Официальное объяснение PHPUnit (в настоящее время я не нахожу никаких других полезных официальных деталей).

Это кэширование требуется для работы некоторых других функций.

Вы можете отключить это с помощью:

 <phpunit 
    ...
    cacheResult="false">