2012-03-07 3 views
72

PHPUnit을 사용하여 symfony2 애플리케이션을 테스트하려고합니다. 모든 프로젝트가 예상대로 작동하지만 필자는 다른 프로젝트에서 PHPUnit이 모든 테스트가 끝날 무렵 테스트 스위트를 무작위로 실행을 중지하고 테스트 스위트를 끝내고 코드를 작성한 후 테스트를 다시 시작한다는 이상한 동작이 있습니다. 적용 범위. 다른 경우에는 정상적으로 실행됩니다. 여기 phpunit가 무작위로 테스트를 다시 시작합니다

는 (시험 반복 재시작된다)이 일어나고 있는지 볼 수 있도록 일부 출력된다 : 여기
PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
...........PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
...PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
............PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
............PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
.................. 

Time: 01:03, Memory: 43.00Mb 

OK (83 tests, 145 assertions) 

Writing code coverage data to XML file, this may take a moment. 

Generating code coverage report, this may take a moment. 

테스트 스위트 재시동의 예는 모든 테스트 실행 후 :

PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
.................. 

Time: 01:29, Memory: 53.25Mb 

OK (83 tests, 145 assertions) 

Writing code coverage data to XML file, this may take a moment. 

Generating code coverage report, this may take a moment. 
PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
............PHPUnit 3.6.10 by Sebastian Bergmann. 

내 다른 프로젝트가 아무런 문제없이 실행되기 때문에 코드 내에 문제가 있어야합니다. 그러나 나는이 행동을 유발할 가능성이 무엇인지 알 수 없다! 로그에는 예상치 못한/이상한 점이 전혀 표시되지 않습니다.

편집

어제, 나는 이상한 뭔가를 발견 : 나는 때문에 일부 관련이없는 이유 MySQL로 MongoDB를 전환하기로 결정했다. 전환이 완료된 후 모든 테스트가 아무 문제없이 실행됩니다. 나는 그것을 여러 번 시도했지만 더 이상 재현 할 수 없다. 이것은 기능 테스트에서만 발생했기 때문에 문제는 데이터베이스를 지우고 다시 작성하기위한 명령을 실행하는 WebTestCase 클래스라고 생각하는 경향이 있습니다. 어쩌면 MongoDB를 사용하는 사람도이 동작을 재현 할 수 있습니까?

+0

65/83 같은 장소에서 항상 그런 것처럼 보입니다. 테스트가 어떤 것인지 확인할 수 있습니까? 실행 중에'--verbose' 옵션을 사용해보십시오. –

+0

65/83은 1 행에서 65 개의 테스트가 실행되는 것을 의미합니다 (각 점은 하나의 테스트 임). 두 번째 줄에서는 실행 된 테스트의 수가 동일하지 않으므로 실패한 테스트 중 하나라는 것을 알 수 있습니다. 테스트가 때때로 작동하고 때로는 반복되므로 한 번의 테스트로 인해 문제가 될 수 있습니다. 그러나 나는 더 조사 할 것이다! – Sgoettschkes

+1

나쁜 소식! 나는 그 뇌의 어딘가에 그 지식을 가지고 있었다. 질문입니다. 고립 된 PHP 프로세스에서 각 테스트를 실행하고 있습니까? 그것은이 비정상적인 활동을 일으킬 수 있습니다. 우리는 항상 PHPUnit과 동일한 버전의 PHPUnit을 사용하고 있습니다. –

답변

1

데이터베이스 서버 연결 제한 및 풀을 확인하는 것이 좋습니다.

예를 들어 최대 연결 수가 100 개이고 테스트 중 일부가 연결을 열어 놓으면 ("누수") 한계를 초과했습니다.

데이터베이스가 다른 작업을 동시에 처리 할 수 ​​있으므로 때로는 작동하고 때로는 제한을 초과하는 경우도 있으므로 천장에 충돌하는 경우가 있습니다. 다른 경우에는 아무것도 실행되지 않아 테스트를 성공적으로 실행할 수 있습니다.

지속적인 네트워크 연결 및 기타 외부 리소스를 확인하십시오.

관련 문제