PHPUnitManual:7.1

From 흡혈양파의 번역工房
Revision as of 08:10, 2 July 2013 by Onionmixer (talk | contribs) (PHPUnit 7.1 파일 시스템을 사용한 test suite 구성 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
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