PHPUnitManual:7.1

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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 설정 파일로 명시적으로 지정하는 방법을 설명합니다.


Notes