PHPUnitManual:8.8
- 8.8 Frequently Asked Questions
PHPUnit 은 매 테스트마다 데이터베이스 스키마를 다시 작성합니까?
아니오. PHPUnit 는, test suite 를 시작할 때 모든 데이터베이스 오브젝트가 존재하는 것을 전제로 합니다. 데이터베이스, 테이블, 시퀀스, 트리거, 뷰 등은 test suite 를 실행하기 전에 생성되어야 합니다.
Doctrine 2 이나 eZ Components 가 가지는 강력한 도구를 사용하여, 정의된 데이터 구조로부터 데이터베이스 스키마를 작성할 수 있습니다. 그렇지만, 이 도구들은 PHPUnit extension 에 묶여 있어야 합니다 (hooked). 그렇지 않으면 전체 test suite 실행 전에 데이터베이스를 자동으로 재생성할 수 없게 됩니다.
각 테스트 실행 뒤에는 데이터베이스를 후처리하기 때문에, 테스트를 실행할 때마다 데이터베이스를 재작성할 필요는 없습니다. 사전에 만든 데이터베이스를 계속하여 사용할 수 있습니다.
PDO 를 사용하는 어플리케이션이 아니면 Database Extension 를 사용할 수 없습니까?
아니오, PDO 가 필요한 것은 fixture 의 준비와 후처리, 검증 뿐입니다. 테스트 대상 코드 내부에서는 어떤 방법으로 데이터베이스에 접속해도 됩니다.
Too much Connections 에러가 발생한 경우에는 어떻게 해야 합니까?
테스트 케이스의 getConnection() 메소드에서 만든 PDO 인스턴스를 캐싱하지 않는다면, 데이터베이스를 사용하는 테스트를 실행할 때마다 데이터베이스 connection 의 숫자는 늘어납니다. 기본 설정에서는 MySQL 이 받아들이는 connection 은 100개까지로, 다른 데이터베이스들도 비슷한 제한이 있습니다
"자작 데이터베이스 테스트 케이스 추상화" 에 이 에러를 회피하는 방법이 나와 있습니다. 하나의 PDO 인스턴스를 캐싱하여, 모든 테스트에 재사용하는 방법입니다.
Flat XML 이나 CSV dataset 에서 NULL 을 다루는 방법은?
그런 방법은 없습니다. NULL 을 다루기 위해서는 XML 이나 YAML dataset 을 사용하십시오.