2011-09-01 6 views
4

symfony2 애플리케이션이 있고 phpunit을 사용하고 있습니다.phpunit 테스트 환경 간 재설정

나는 모크를 사용하여 AppKernel과 응용 프로그램에 "실제"요청을하는 기능 테스트를 모의하는 단위 테스트를하고 있습니다. 유닛 테스트 나 기능 테스트 만 실행하면 모든 것이 정상적으로 작동합니다.

한 번에 모든 테스트를 실행하고 싶을 때 불쾌 해집니다. 즉시 단위 테스트가 완료 될 때, phpunit을 나를 말하는 중지 : 나는 phpunit을 그것의 자신의 환경에서 각 테스트를 실행하는 것입니다 생각으로

Fatal error: Cannot redeclare class AppKernel in C:\Users\sebastian\workspace\ppInterface\app\AppKernel.php on line 35

나는 이것을 이해하지 않습니다. 이것은 그렇지 않습니다. 일을 올바르게하고 테스트가 실행되는 환경을 "재설정"하려면 어떻게해야합니까?

답변

8

PHPUnit은 모든 것이 기본값으로 재설정되는 것은 아닙니다.

포함 - 문제가있는 경우 - 재설정되지 않으며 한 번에 처리 할 수 ​​없습니다. 해결책은 require 대신 require_once을 사용하거나 phpunit.xml 파일 또는 테스트 사례 (@runTestsInSeparateProcesses) 또는 테스트 방법 (@runInSeparateProcess)에서 프로세스 격리를 사용하는 것입니다.

또한 시험 사이에 resetted 어떤 영향을 미칠 수는 : runTestsInSeparateProcesses` @

  • @backupGlobals
  • @backupStaticAttributes
+0

'위대한 작품! 테스트에 추가했는데 이제는 모두 문제없이 실행됩니다. 나는 그것을 phpunit.xml에 추가하고 싶지만 추가 할 곳을 찾지 못했습니다. 내 xml에 내에 정의 된 그룹에 추가하고 싶습니다. 그게 가능하니? – Sgoettschkes

+1

별도의 프로세스에서 테스트를 실행하면 애플리케이션이 커질수록 성능이 크게 저하되기 시작합니다. 테스트를 모의 (mock)를 사용하는 것과 모르는 (mock)을 사용하는 두 그룹으로 나누는 것이 좋습니다. –

+1

물론'phpunit.xml'에서 설정할 수 있습니다 :'processIsolation = "true"'를''에 추가하십시오. – mAu

관련 문제