У меня была такая же проблема (хотя и на сервере LAMP), так как я вполне полагаюсь на эти номера строк и скриншоты, чтобы точно определить, что идет не так в моих тестах. Об ошибке, которая, как я полагаю, есть, по-видимому, сообщается. См. https://github.com/sebastianbergmann/phpunit-selenium/issues/81 для справки.
В качестве временного временного решения я ввел номер строки в сообщение об ошибке в исключении, которое выдается (поскольку номер строки, конечно, можно найти в трассировке). Как побочный эффект, большинство исключений переброшено, и я только выкидываю PHPUnit_Framework_Error, но по крайней мере я получаю номер строки в выводе. В качестве временного решения, пока это не исправлено, это работает для меня.
Чтобы добиться этого, я расширяю PHPUnit_Extensions_SeleniumTestCase своим собственным SeleniumTestCase и помещаю в него следующие функции:
Очень немного измененная версия этой функции для моего собственного использования: https://stackoverflow.com/a/6608751
protected function dumpStack(Exception $e) {
$stack = '';
foreach ($e->getTrace() as $trace) {
if (isset($trace['file']) &&
isset($trace['line']) &&
isset($trace['class']) &&
isset($trace['function']))
{
$stack .= PHP_EOL .
$trace['file'] . ':' .
$trace['line'] . ' ' .
$trace['class'] . '::' .
$trace['function'];
}
}
return $stack;
}
Я переопределяю onNotSuccessfulTest из PHPUnit_Extensions_SeleniumTestCase :
protected function onNotSuccessfulTest(Exception $e) {
try {
parent::onNotSuccessfulTest($e);
}
catch (PHPUnit_Framework_IncompleteTestError $e) {
// Don't do anything with the incomplete test exception
throw $e;
}
catch (PHPUnit_Framework_SkippedTestError $e) {
// Don't do anything with the skipped test exception
throw $e;
}
catch (Exception $e_parent) {
// Include line number for specific test file in error
$error_msg = chr(10).chr(10).$this->dumpStack($e);
throw new PHPUnit_Framework_Error($e_parent->getMessage().$error_msg, $e_parent->getCode(), $e_parent->getFile(), $e_parent->getLine(), $e_parent->getTrace());
}
}
Мне не нравится этот взлом, поэтому, если у кого-то есть лучшее решение, я буду рад его услышать!
UPDATE:
Первоначально я забыл упомянуть об этом: вы, конечно, должны заставить тесты расширять свой собственный SeleniumTestCase, а не PHPUnit_Extensions_SeleniumTestCase.