PHPUnit의 실행을 빨리 끝내고 싶을 때
그럴 때, 어쨌든 테스트를 빨리 끝내기 위한 tips입니다.
테스트할 양을 줄이기
로컬로 개발할 때마다 모든 테스트를 실행할 필요가 없을 것입니다. 그럴 때는 테스트하는 양 자체를 줄이자.
filter
또는 group
옵션을 사용하여 특정 테스트만 실행하면 실행 테스트의 총량이 줄어들고 완료까지의 시간이 짧아집니다.참고 : PHPUnit으로 지정된 테스트 만 실행
또한 PhpStorm과 같은 편집기 기능을 사용하면 특정 테스트를 실행할 수 있습니다.
참고 : Testing with PHPUnit
커버리지를 측정하지 않음
filter
및 group
이외에 실행 시간을 단축할 수 있는 옵션이 하나 있습니다.--no-coverage
선택 사항입니다.개발 환경이나 CI 환경이면, 디버그 용도이거나 코드 커버리지의 계측을 위해
XDEBUG
가 인스톨 되고 있다고 생각합니다. 이 때, 코드 커버리지의 계측이 디폴트로 유효하게 되어 있으면, 매회 커버리지의 계측을 실시하기 위해 시간이 걸립니다.아래의 예라면 옵션이 없는 경우 5분, 옵션을 붙인 경우 35초 정도. 8배 이상 속도에 차이가 있는 것을 알 수 있습니다.
옵션이 없는 경우
옵션이 있는 경우
디폴트의 변경을 하고 싶지만 장난 없는 사정으로 곧바로 변경할 수 없다.
CI에서 궁리하고 출시를 가속화
또, CI로 커버리지를 계측해 Coveralls 이나 Codecov 단축이 가능합니다.
CircleCI라면, 특정 브랜치에서 실시하는 테스트용의 처리를 전환해 주면 가능하게 됩니다.
참고
- Configuring CircleCI#branches
- Configuring CircleCI#filters
이 방법을 취하면 같은 환경에서도 옵션의 유무만으로 속도를 개선하는 것이 가능해지므로, 여러 가지의 관리 비용을 줄일 수 있게 된다고 생각합니다. (그 밖에 좋은 방법이 있으면 추기·수정하고 싶습니다)
결론
테스트 시간을 단축하는 방법은 그 밖에, 병렬화하거나
--no-coverage
를 필요할 때만 유효하게 하는 등 있다고 생각합니다. 조직에 따라 환경은 달라질까 생각하기 때문에 필요에 따라 좋은 방법을 폐기 선택할 수 있으면 좋을까 생각합니다.기타 참고
- PHPUnit의 코드 커버리지가 느리기 때문에 포기하지 않고 병렬 실행을 시도합니다.
- CircleCI에서 master 브랜치만 커버리지를 측정하도록 phpunit 실행
Reference
이 문제에 관하여(PHPUnit의 실행을 빨리 끝내고 싶을 때), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryosukes/items/8fc4f7d8fe08ea97a9dc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)