php – Selenium不会显示失败的数字行
我让Selenium服务器在MAMP本地服务器上使用
PHPUnit.
当Assert失败时,失败的数字行没有显示,而是我看到一个phpunit数字行. 当我执行“仅phpunit”测试时,我可以看到失败断言的数字行. PHPUnit只测试 $cd '/Applications/MAMP/htdocs/my-client/tests' && phpunit -c 'phpunit.xml' '/Applications/MAMP/htdocs/my-client/tests/controllers/homeTest.php' PHPUnit 3.6.10 by Sebastian Bergmann. Configuration read from /Applications/MAMP/htdocs/my-client/tests/phpunit.xml . Time: 0 seconds,Memory: 8.00Mb There was 1 failure: 1) HomeTest::test_get_sections Failed asserting that Array ( blah,blah,blah ) ) is identical to Array (blah,blah2 ) ). /Applications/MAMP/htdocs/my-client/tests/controllers/homeTest.php:56 /Applications/MAMP/bin/php/php5.3.6/bin/phpunit:46 FAILURES! Tests: 2,Assertions: 3,Failures: 1. PHPUnit Selenium测试 $cd '/Applications/MAMP/htdocs/my-client/tests' && phpunit -c 'phpunit.xml' '/Applications/MAMP/htdocs/my-client/tests/views/af_web_Test.php' PHPUnit 3.6.10 by Sebastian Bergmann. Configuration read from /Applications/MAMP/htdocs/my-client/tests/phpunit.xml E Time: 2 seconds,Memory: 8.75Mb There was 1 error: 1) af_web_Test::test_crear_una_af_nueva_y_validar_el_valor_por_defecto_de_los_campos Current URL: http://localhost:8888/my-client/index.php/home/view Failed asserting that '' matches PCRE pattern "/0/". /Applications/MAMP/bin/php/php5.3.6/bin/phpunit:46 FAILURES! Tests: 1,Assertions: 6,Errors: 1. 解决方法
我遇到了同样的问题(虽然在LAMP服务器上),因为我非常依赖这些行号和屏幕截图来确定我的测试中究竟出了什么问题.这个错误,我认为是这个,显然是报道的.请参阅
https://github.com/sebastianbergmann/phpunit-selenium/issues/81以供参考.
作为临时解决方法,我强制将行号放入正在抛出的异常中的错误消息中(因为行号当然可以在跟踪中找到).作为副作用,大多数异常都是重新抛出的,我只抛出PHPUnit_Framework_Error,但至少我得到了输出中的行号.作为一个临时的解决方法,直到修复,这对我有用. 为此,我使用自己的SeleniumTestCase扩展PHPUnit_Extensions_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; } 我从PHPUnit_Extensions_SeleniumTestCase覆盖onNotSuccessfulTest: 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()); } } 我不喜欢这个黑客,所以如果有人有更好的解决方案,我会很高兴听到它! 更新:我最初忘了提到这一点:你当然必须让测试扩展你自己的自定义SeleniumTestCase,而不是PHPUnit_Extensions_SeleniumTestCase. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |