Я написал несколько тестов PHPUnit для моего приложения PHP. Я работаю на двух машинах разработки, которые синхронизируют всю файловую систему разработки, и есть автоматическая система тестирования, которая запускает тесты на чистой проверке SVN.
Теперь происходит нечто странное. Одна из машин разработки работает под управлением Ubuntu linux 10.10, PHP 5.3.3, phpunit 3.4.6, который я позже обновил до 3.4.14. Когда я запускаю phpunit для каждого теста, все тесты проходят. Когда я запускаю phpunit в моем файле конфигурации xml, который просто запускает их все, используя phpunit --configuration=phpunit.cfg
, последний тестовый случай завершается неудачно, и возвращается ошибка Class myClass not found
. Этот класс находится внутри файла, который загружается с использованием require_once
. Обновление phpunit не имеет значения.
edit: У меня такое ощущение, что список файлов, которые PHP включает с помощью require_once
, не сбрасывается на моем Linux-компьютере, но классы фактически потеряны, то есть он думает, что имеет
уже включен 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 такой же.
Я чувствую себя полностью в темноте здесь. Как я могу выяснить, в чем может быть проблема?
И на машине разработки linux, и на macbook работает PHP 5.3.3. Машина автотеста работает 5.2.6