有沒有辦法讓PHPUnit在發生錯誤後繼續?例如,我有一個大型測試套件(400多步),如果說沒有找到一個元素,我更喜歡它,它不會阻止我的腳本的其餘部分繼續。PHPUnit Selenium Server - 更好/自定義錯誤處理?
4
A
回答
1
有更好的方法來做到這一點。不要重載每個斷言*()方法,只能重載一個方法:runTest()。這是對每一個斷言,例外可以被捕獲:
abstract class AMyTestCase extends PHPUnit_Framework_TestCase
{
public function runTest()
{
try {
parent::runTest();
}
catch (MyCustomException $Exc) {
// will continue tests
}
catch (Exception $Exc) {
if (false === strpos($Exc->getMessage(), 'element not found')) {
// rethrow:
throw $Exc;
}
// will also continue
}
}
}
2
我們在硒測試中做同樣的事情。您需要捕獲斷言失敗所引發的異常,唯一的方法是創建一個覆蓋斷言方法的自定義測試用例基類。您可以使用測試監聽器存儲故障消息並在最後通過測試。
我沒有在我面前的代碼,但它非常直截了當。例如,
abstract class DelayedFailureSeleniumTestCase extends PHPUnit_Extension_SeleniumTestCase
{
public function assertElementText($element, $text) {
try {
parent::assertElementText($element, $text);
}
catch (PHPUnit_Framework_AssertionFailedException $e) {
FailureTrackerListener::addAssertionFailure($e->getMessage());
}
}
... other assertion functions ...
}
class FailureTrackerListener implements PHPUnit_Framework_TestListener
{
private static $messages;
public function startTest() {
self::$messages = array();
}
public static function addAssertionFailure($message) {
self::$messages[] = $message;
}
public function endTest() {
if (self::$messages) {
throw new PHPUnit_Framework_AssertionFailedException(
implode("\n", self::$messages));
}
}
}
相關問題
- 1. PhpUnit Selenium測試的錯誤處理
- 2. 爲powershell提供更好的自定義錯誤處理
- 3. PHPunit - 測試一個自定義的錯誤處理類
- 4. strongloop loopback自定義錯誤處理
- 5. 自定義錯誤處理http模塊
- 6. Yii:自定義錯誤處理轉發
- 7. 自定義PHP錯誤處理程序
- 8. php自定義錯誤處理程序
- 9. iOS RestKit自定義錯誤處理
- 10. 自定義錯誤處理程序
- 11. i18n自定義驗證錯誤處理
- 12. 自定義錯誤處理與改造
- 13. 自定義錯誤在ASP.NET MVC處理
- 14. jQuery ajax JSON自定義錯誤處理
- 15. 自定義的錯誤處理
- 16. 錯誤處理Symfony自定義庫
- 17. 自定義PHP錯誤處理
- 18. 自定義插件的錯誤處理
- 19. 錯誤500的自定義處理?
- 20. Gson自定義錯誤處理
- 21. php自定義錯誤處理
- 22. Go中的自定義錯誤處理
- 23. 自定義錯誤處理ASP.NET
- 24. 自定義錯誤處理Asp.Net
- 25. vb.net自定義錯誤處理模塊
- 26. 燒瓶 - 自定義錯誤處理
- 27. 自定義錯誤處理和cancan
- 28. MVC自定義錯誤處理問題
- 29. Tastypie-django自定義錯誤處理
- 30. 自定義錯誤處理消息自定義WebServiceHost