2013-12-11 3 views
3

CakePHP 2.4.3으로 개발 중이며 Unittest를 많이 사용합니다. 현재 모델을 중심으로.CakePHP에 대한 unittests를 어떻게 향상시킬 수 있습니까?

테스트를 실행해야하는 시간을 단축 할 수 있습니까? 왜 그렇게 느리게합니까? 비품의 DB 삽입 은요?

나는 테스트가 실행되기를 기다릴 인내심이 없다는 것을 알아 차리고 기다리는 동안 다른 일을하기 시작하고 내가 돌아올 때 나는 내가 테스트 한 문제점을 놓쳤다.

어떤 힌트를 주셔서 감사합니다!

CalamityJane

+1

, 그들이 증거로 추정되는 무언가가 작동합니다. IMO 테스트의 속도를 높일 필요가 없습니다. 아니면 적어도 더 의미 있고 유용한 방식으로 다른 방법으로 보냈을 시간입니다. – mark

+2

어떤 테스트가 실행되는지 필터링 할 수 있습니다. 대부분의 경우, 한 클래스에서 단 1-5 개의 단일 테스트 만 실행할 수 있습니다. 그리고 나서 주기적으로 모든 것을 실행합니다. –

답변

9
난 강력하게 의견을 마크와 함께 여기에 동의하지

:

Unittests은 그들이 그 사실 아니에요하지만 성가신 될 수

기술적으로 "빠른"있어야되지

. 대규모 프로젝트에서 CI를 사용하면 테스트가 끔찍해질 수 있습니다. 모든 검사가 끝날 때까지 30 분을 기다리지 않으려 고합니다. ~ 550 개의 테이블이있는이 프로젝트를 진행했습니다.

실제로 병목 현상은 고정물 로딩입니다. 각 테스트마다 모든 조명기를 반복해서 만들어야하기 때문에. 천천히.

내부 플러그인을 사용하여 조명기를 사용하는 대신 테스트 데이터베이스 템플릿을 테스트 데이터베이스에 복사합니다. 이로 인해이 프로젝트의 테스트를 30 분에서 몇 분 사이에 실행하는 시간이 줄어 들었습니다.

이 작업을 수행 할 수있는 오픈 소스 플러그인은 https://github.com/lorenzo/cakephp-fixturize입니다. SQL 파일에서 조명기를로드하거나 템플릿 데이터베이스 (see this section of the readme.md)에서도로드 할 수 있습니다.

그냥 모든 테스트를 실행할 필요가없는 하나의 방법을 테스트해야하는 경우, 필터링 할 수있는 테스트 :

이 Unittests는 "빠른"있어야되지
cake test <file> --filter testMyMethod 
+0

감사합니다 burzum! 나는 그것을 조사하고 여기에 피드백을 줄 것이다. 나는 TDD에게 시험을 보냈기 때문에 당신의 의견에 동의합니다. 그리고 그 테스트 기간은 정말로 킬러입니다. –

+0

내 대답을 올바른 것으로 표시하면 좋을 것입니다. 감사합니다. – burzum

+0

굉장한 대답, @burzum. 나는 이제 fixturize도 사용하고 있습니다. –