PHPUnitManual:8.3
Revision as of 08:18, 2 July 2013 by Onionmixer (talk | contribs) (PHPUnit 8.3 데이터베이스 테스트의 4단계 페이지 추가)
- 8.3 데이터베이스 테스트의 4단계
데이터베이스 테스트의 4단계
Gerard Meszaros 는 저서 xUnit Test Patterns 에서 단위 테스트를 다음 4단계로 분류합니다.
- fixture 셋업 (Setup)
- 테스트 대상 시스템의 실행 (Exercise)
- 결과 검증 (Verify)
- 후처리 (Teardown)
- Fixture 란?
- fixture 란, 어플리케이션이나 데이터베이스의 초기 상태를 말합니다. 테스트를 실행하기 전에 준비해야 합니다.
데이터베이스를 테스트하기 위해서는, 적어도 setup 과 teardown 에서는 테이블에 접속하여 fixture 의 clean-up 이나 insert 를 해야만 합니다. 그렇지만, Database Extension 에서는 위의 4단계를 다음과 같이 바꿀 충분한 이유가 있습니다. 이 work flow 는 각각의 테스트에 관해 실행됩니다.
1. Clean-Up Database
데이터베이스를 사용하는 첫번째 테스트는 언제나 존재할 것입니다. 실제로 해당 테이블에 데이터가 존재할지 아닐지는 알 수 없습니다. PHPUnit 는 지정한 모든 테이블에 TRUNCATE 를 실행하여 테이블을 비웁니다.
2. Set up fixture
PHPUnit 는 fixture 의 각 행을 순차적으로 처리하여 대응되는 테이블에 insert 합니다.
3–5. Run Test, Verify outcome and Teardown
데이터베이스를 리셋하여 초기 상태를 insert 한 뒤, PHPUnit 는 테스트를 실행합니다. 테스트 코드의 이 부분은 Database Extension 를 알고 있을 필요가 없고, 코드에 관한 모든 필요한 테스트를 할 수 있습니다.
테스트 안에서 assertDataSetsEqual() 라는 특수한 검증을 사용할 수도 있습니다. 이 기능은 전적으로 옵션 기능입니다. 자세한 기능은 "Database Assertions" 에서 설명할 것입니다.