2013-08-06 2 views
4

У меня есть тесты непрерывной интеграции SeleniumWebdriver/TestNG/Maven/Java, которые запускаются каждый раз после развертывания. Иногда элемент отсутствует в пользовательском интерфейсе, и тесты вызывают исключение (которое позже попадает в код, потому что в операторе catch я отключил браузер), поэтому сборка отмечена как успешная.Дженкинс сообщает об успешном тестировании, хотя есть ошибки, вызванные исключениями?

Странная вещь: у меня также были неудачи в тестах, вызванных исключениями, и сборка по-прежнему считалась успешной.

Как настроить мой файл maven pom.xml или сборку jenkins, чтобы он мог отмечать каждый тест, который вызвал исключение, FAILURE?

EDIT: После того, как к этому товару robjohncox, я теперь другой, что мне нужно сделать:

Как именно я снова бросить ошибку?

} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    quit(driver); 
    sendMail(); 
} 

Это делается так?

throw e; 

ответ

1

Я думаю, проблема связана с тем, что вы перехватываете исключение в коде. Поскольку вы обрабатываете исключение, оно не распространяется на ваш тестовый бегун, и поэтому тестирующее средство не знает, что было выбрано исключение.

После обнаружения исключения и отключения браузера вы должны повторно выбрасывать исключение, а затем тестовые отказы должны сообщаться в тестовой среде. Код будет выглядеть примерно так:

public void myTestCase() { 
    try { 
     // Do the testing 
    } 
    catch(Exception ex) { 
     // Turn off the browser 
     throw ex 
    } 
} 
+0

Интересно. попробуем его и поделимся результатами. –

+0

Я отредактировал свой вопрос –

+1

Просто добавьте 'throw e;' в качестве последней строки в вашем блоке catch (как показано в примере выше) :) – robjohncox

Смежные вопросы