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
PHPUnit 버전? –
아! 언급하는 것을 잊어 버렸습니다. 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에 다시 나타납니다. –
다른 유형의 오류라면 이전 테스트가 나중의 테스트를 방해하고있는 것으로 의심됩니다. 하나의 테스트가 나중에 테스트가 의존하는 전역 변수 또는 정적 변수를 변경하는 경우 이러한 현상이 발생할 수 있습니다. 이 일이 일어날 가능성이 있으며, 다른 코드 경로가 실행되어 '고립 된'테스트를 실행하면 실행되지 않는 'myClass'가 필요합니까? –