2012-09-07 1 views
1

Symfony2 프로젝트의 모든 내 독트 엔티티에서 단위 테스트를합니다. 나는 UserTest 클래스에서 setter/getter를 테스트하고 UserDbTest 클래스의 db persistance로 setter/getter를 테스트합니다. 모든 파일은 Entity 폴더에 있습니다. 테스트 폴더 아래에 폴더가 있습니다. 둘 다 테스트하는 것이 좋을 것이라고 생각합니다. Db 클래스를 넣으시겠습니까?phpunit DB 테스트를 symfony2에 두는 것이 가장 좋습니다.

Thx

답변

6

Entity 클래스에 사용자 지정 데이터베이스 논리가 없으면 (단, 가지고 있지 않아야 함) 단위 테스트 및 기능 테스트를 만들 필요가 없습니다. Doctrine이 테스트되었으므로 persist/flush이 올바르게 작동하고 이러한 테스트를 복제 할 필요가 없습니다.

그러나 예를 들어 쿼리가 올바르게 작동하는 경우 사용자 지정 데이터베이스 논리 (및 추가 추상화)를 넣는 곳인 XYManager 클래스 (여기에서 XY은 엔터티의 이름 임)를 개인적으로 테스트해야하는 경우 그것. 내 접근 방식은 FOSUserBundle에서 영감을 얻었습니다 (UserManager 참조). 내 돌출 EntityEntityManger 클래스 모두에서

은 번들의 Entity 폴더에 이러한 클래스에 대한 테스트는 Tests/Entity 폴더에 있습니다. 기능 테스트는 단위 테스트보다 훨씬 오래 걸리기 때문에 PHPUnit의 @group 주석을 사용하여 기능 테스트를 구분합니다. 데이터베이스가 필요하지 않은 모든 테스트에 @group unit을 추가하면 데이터베이스가 필요하거나 WebTestCase 인 모든 테스트에 WebTestCase@group functional이 아닙니다. 난 단지 단위 테스트를 실행하려면

나는

phpunit -c app/ --group unit` 

phpunit -c app/ --group functional 

만 기능 테스트를 실행 할 수 있습니다.

phpunit -c app/ 

은 기능 테스트와 단위 테스트를 모두 실행합니다.

+0

답장을위한 Thx – EAdel