У меня странная проблема с PHPUnit.Я работаю над проектом с командой разработчиков, которые должны использовать PHPUnit 3.6.5.По большей части мой PHPUnit прекрасно работает и дает те же результаты, что и на машинах других разработчиков.Тем не менее, я иногда обнаруживаю, что определенная строка не покрыта на моей машине, но на машинах других разработчиков.Вот недавний сценарий:
- Боб проверяет новый файл, который он только что обновил.Он удостоверился, что модульный тест прошел для этого файла и имел 95% покрытия кода.После выполнения этой проверки он проверяет файл, в котором он построен, и запускается модульный тест.Если на сервере не проходит модульный тест, наша сборка становится красной, и никто не может зарегистрироваться.
- Сервер запускает тест phpunit и проходит его.
- Другие разработчики, включая меня, получают последнюю версиюиз репозитория Perforce
После внесения собственного набора изменений я запускаю все тесты phpunit для приложения, но замечаю, что один из файлов не имеет достаточного покрытия кода.Это файл, который только что зарегистрировал Боб. Я проверяю с некоторыми другими разработчиками в моей команде, и файл проходит покрытие кода без проблем для них.Когда я проверяю отчет о покрытии кода, я вижу следующее:
array_walk(
$variable1,
function($val,$key) use(&$variableData, &$variable2)
{
$variableData[$variable2][$key] = 1;
}
);
$ variable1,
использование функции ($ val, $ key) (& $ variableData, & $ variable2)
Эти две строки не рассматриваются!Я не понимаю, почему мой phpunit не хочет покрывать эти строки.Должна быть настройка, о которой я не знаю, которая вызывает это, поскольку у меня та же версия PHPUnit, что и у других разработчиков, и она отлично работает на их компьютере, но не на моей.Я также вижу ту же проблему в таком утверждении:
if ($var === 1) {
echo 'yes';
} else {
echo 'nope';
}
Теперь модульный тест будет охватывать оба условия, однако он не охватывает следующую строку:
} else {
Имеет ли это какой-либо смысл?Самое странное в этом то, что он работает большую часть времени, но есть несколько мест, где такое поведение, хотя нет шаблона для указания того, что это вызывает.У меня были другие разработчики, которые смотрели на эту проблему на моей машине, и они сбиты с толку и не могут объяснить, что ее вызывает.Проблема в том, что это локально для меня не работает, хотя я не трогал файл Боба, он не дает мне проверить свои изменения.Кто-нибудь сталкивался с этой проблемой раньше?Я собираюсь попробовать удалить модуль php и переустановить его, но кроме этого, я в недоумении для слов.Любая помощь будет принята с благодарностью!Вот мои спецификации:
PHPUnit: версия 3.6.5 Операционная система: OS X 10.6.8 PHP: PHP 5.3.8-ZS5.5.0 (cli) (сборка: 24 августа 2011 г. 11:03:29)Zend Debugger: выключен XDebug: включен Zend Optimizer +: выключен
С уважением,
Будет