PHPUnitManual:7.1
Revision as of 08:10, 2 July 2013 by Onionmixer (talk | contribs) (PHPUnit 7.1 파일 시스템을 사용한 test suite 구성 페이지 추가)
- 7.1 파일 시스템을 사용한 test suite 구성
test suite 를 구성하는 가장 간단한 방법은, 모든 테스트 케이스의 소스 파일을 하나의 디렉토리에 포함시키는 것일 것입니다. PHPUnit 은 테스트 디렉토리를 재귀적으로 탐색하여 자동으로 테스트를 발견하고 실행합니다.
Object_Freezer 라이브러리의 test suite 를 봅시다. 이 프로젝트의 디렉토리 구성을 보면, 테스트 케이스 클래스가 "Test" 디렉토리 안에 모여져 있음을 알 수 있습니다. 내부의 디렉토리 구조는, 테스트 대상 시스템 (SUT) 가 존재하는 "Object" 디렉토리의 구조와 동일합니다.
Object Tests
|-- Freezer |-- Freezer
| |-- HashGenerator | |-- HashGenerator
| | `-- NonRecursiveSHA1.php | | `-- NonRecursiveSHA1Test.php
| |-- HashGenerator.php | |
| |-- IdGenerator | |-- IdGenerator
| | `-- UUID.php | | `-- UUIDTest.php
| |-- IdGenerator.php | |
| |-- LazyProxy.php | |
| |-- Storage | |-- Storage
| | `-- CouchDB.php | | `-- CouchDB
| | | | |-- WithLazyLoadTest.php
| | | | `-- WithoutLazyLoadTest.php
| |-- Storage.php | |-- StorageTest.php
| `-- Util.php | `-- UtilTest.php
`-- Freezer.php `-- FreezerTest.php
PHPUnit 의 command-line test runner 에 테스트 디렉토리를 지정하면 이 라이브러리의 모든 테스트가 실행됩니다.
phpunit Tests
PHPUnit 3.7.0 by Sebastian Bergmann.
............................................................ 60 / 75
...............
Time: 0 seconds
OK (75 tests, 164 assertions)
- 주의사항
- PHPUnit 의 comman-line test runner 에 디렉토리를 지정하면, 해당 디렉토리 내부의 *Test.php 를 검색하여 실행합니다.
Tests/FreezerTest.php 안의 테스트 케이스 클래스인 Object_FreezerTest 에 선언된 테스트를 실행하기 위해서는, 다음 명령어를 실행하면 됩니다.
phpunit Tests/FreezerTest
PHPUnit 3.7.0 by Sebastian Bergmann.
............................
Time: 0 seconds
OK (28 tests, 60 assertions)
보다 자세하게 테스트를 지시하기 위해서, --filter 스위치를 사용할 수 있습니다.
phpunit --filter testFreezingAnObjectWorks Tests
PHPUnit 3.7.0 by Sebastian Bergmann.
.
Time: 0 seconds
OK (1 test, 2 assertions)
- 주의사항
- 이 방식의 결점은, 테스트의 실행 순서를 제어할 수 없다는 것입니다. 이 때문에, 테스트의 의존성에 관한 문제가 발생할 수 있습니다. "테스트의 의존성" 을 참조해 주세요. 다음 절에서는 테스트의 실행 순서를 XML 설정 파일로 명시적으로 지정하는 방법을 설명합니다.