Phpunit ведет себя по-разному на разных машинах - PullRequest
2 голосов
/ 09 декабря 2010

Я написал несколько тестов 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

Ответы [ 2 ]

1 голос
/ 24 апреля 2011

Две вещи, на которые стоит обратить внимание:

  • Путь включения в конфигурации PHP на обеих машинах
  • Что в вашем homedir нет другой копии файла класса или cwd скрипта. Обычно . будет в пути включения для PHP, и мошеннические копии файлов могут вызвать такие проблемы
0 голосов
/ 24 апреля 2011

Возможно ли, что работает не PHPUnit, а проблема локальной конфигурации php, вызывающая проблемы в тестируемой системе?Разместите ваш php.ini на двух машинах, и вы, вероятно, найдете некоторые различия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...