Как остановить TestNG исполнитель, когда происходит исключение? - PullRequest
0 голосов
/ 29 марта 2012

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

  1. Каков наилучший способ принудительно остановить выполнение TestNG при возникновении исключения с помощью метода тестирования или конфигурации?
  2. Записать исключение в консоли при программном выполнении?

Вот фрагмент кода для выполнения бегуна:

TestListenerAdapter tla = new TestListenerAdapter();
IMethodInterceptor im = new  TestMethodInterceptor();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { TestClass1.class, TestClass2.class});
testng.addListener(tla);
testng.setMethodInterceptor(im);
testng.run(); 

Ответы [ 2 ]

1 голос
/ 16 сентября 2014

Использование IHookable, как описано в предыдущем ответе, является хорошим способом для имитации полной отмены набора тестов, пропуская все следующие методы. Однако он не уведомляется (и, следовательно, не отменяет) методы конфигурации (например, методы, отмеченные @BeforeClass и @BeforeMethod), и часто именно здесь происходит реальная обработка.

Чтобы справиться с этим, вы можете заменить IHookable на IInvokedMethodListener , чей метод beforeInvocation также будет запускаться для методов конфигурации. Если вы хотите отменить остальные тестовые выполнения, выведите SkipException каждый раз, когда вызывается beforeInvocation.

В моем случае это успешно отменило всю дальнейшую обработку без каких-либо предположений о структуре теста.

1 голос
/ 29 марта 2012

Насколько я знаю, нет прямого положения о прекращении исполнения.

Вероятно, вы можете добавить 2 слушателей, используя вызовы addListener. Один реализует ITestListener , а другой реализует IHookable , примеры обоих вы можете получить на сайте testng . ITestListener даст вам метод onTestFailure (). Здесь вы можете установить значение, которое будет указывать, что произошла ошибка. В реализации IHookable вы можете проверить это значение и только затем вызывать метод, иначе пропустите его.

Печать исключений также может быть обработана методом onTestFailure.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...