2010-12-09 9 views
2

PHP 응용 프로그램에 대해 몇 가지 PHPUnit 테스트를 작성했습니다. 나는 전체 개발 파일 시스템을 동기화하는 두 개의 개발 컴퓨터에서 작업하고 있으며 깨끗한 svn 체크 아웃에서 테스트를 실행하는 자동 테스트 시스템이 있습니다.Phpunit은 다른 컴퓨터에서 다르게 동작합니다.

이제 이상한 일이 벌어지고 있습니다. 개발 기계 중 하나는 Ubuntu linux 10.10, PHP 5.3.3, phpunit 3.4.6을 실행했으며 나중에 3.4.14로 업그레이드했습니다. 각 단일 테스트에서 phpunit을 실행하면 모든 테스트가 통과됩니다. phpunit --configuration=phpunit.cfg을 사용하여 모두를 실행하는 XML 구성 파일에서 phpunit을 실행하면 마지막 테스트 사례가 실패하고 Class myClass not found 오류가 반환됩니다. 이 클래스는 require_once을 사용하여로드 된 파일 안에 있습니다. phpunit을 업그레이드해도 아무런 효과가 없습니다.

편집 : 나는 PHP 내 리눅스 박스에 초기화되지 않습니다 require_once를 사용하여 포함 파일 만 클래스 목록이 실제로 손실된다는 느낌이, 즉, 그것은 생각이 이미 myclass.php 동안을 포함하고있다 내부의 클래스가로드되지 않습니다.

이제 다른 컴퓨터에서 Mac OS X Snow Leopard 10.6.5, PHP 5.3.3 및 phpunit 3.4.3이 실행 중입니다. 개별적으로 단위 테스트를 실행하면 Linux 상자에서와 마찬가지로 오류가 발생하지 않지만 xml 구성을 사용하여 테스트를 실행하면 오류가 발생하지 않습니다. 또한 Linux 10.4 LTS, PHP 5.2.6 및 phpunit 3.4.9를 실행하는 자동 테스트 환경이 있습니다. 또한 오류가 없습니다.

모든 시스템은 정확히 동일한 파일을 사용하므로 소스 코드 나 테스트에는 차이가 없습니다. 또한 phpunit.xml도 같습니다.

나는 완전히 어둠 속에서 느낀다. 문제가 무엇인지 파악하려면 어떻게해야합니까?

리눅스 개발 컴퓨터와 macbook 모두 PHP 5.3.3을 실행 중입니다. 자동 테스트 시스템이 작동 중임 5.2.6

+0

PHPUnit 버전? –

+0

아! 언급하는 것을 잊어 버렸습니다. 3.4 분기 전부. Mac : 3.4.3. (잘 작동합니다.) 자동 테스트 : 3.4.9. (잘 작동합니다.) Linux : 3.4.6 및 3.4.14. (둘 다 똑같은 문제를 안고 있습니다.) 3.4.3에서는 문제가 없어지기를 기대하지 않고, 3.4.6에 나타나고, 3.4.9에서 해결하고, 3.4.14에 다시 나타납니다. –

+0

다른 유형의 오류라면 이전 테스트가 나중의 테스트를 방해하고있는 것으로 의심됩니다. 하나의 테스트가 나중에 테스트가 의존하는 전역 변수 또는 정적 변수를 변경하는 경우 이러한 현상이 발생할 수 있습니다. 이 일이 일어날 가능성이 있으며, 다른 코드 경로가 실행되어 '고립 된'테스트를 실행하면 실행되지 않는 'myClass'가 필요합니까? –

답변

0

테스트중인 시스템에서 문제를 일으키는 PHPUnit이 아닌 PHP 로컬 구성 문제 일 수 있습니까? php.ini 파일을 2 대의 컴퓨터에서 비교하면 차이점이있을 수 있습니다. 조심하는

1

두 가지 :

  • 이 (가) 두 시스템에서 PHP의 설정에 경로를 포함하여 홈 디렉토리에 주위에 앉아 클래스 파일의 다른 사본 또는 cwd의이 아니라고
  • 스크립트. 보통 .은 PHP의 포함 경로에 포함되며 파일의 불법 복제는 이와 같은 문제를 일으킬 수 있습니다.
관련 문제