2013-08-02 5 views
5

Я хотел снять скриншот, когда тест завершился неудачно, но, послесловие, запустите метод @After.Запустите TestWatcher до @After

Это можно сделать? С помощью TestWatcher метод failed() запускается после @After.

Кроме того, я не могу передать @After содержимое TestWatcher finished(), потому что у меня есть super.afterTest() для вызова @After.

Любые идеи?

+0

Я нашел этот блог https://garygregory.wordpress.com/2011/09/25/understaning -junit-method-order-execution/чрезвычайно полезно в понимании заказов выполнения JUnit. – sam

ответ

0

У меня была такая же проблема, и я изменил свой код, чтобы запустить код из @ После метода final() нового правила. Таким образом, порядок выполнения Сейчас:

  • @After
  • не удалось() (в случае неудачи)
  • законченный()
0

Это невозможно для TestWacher методов finished() или failed() скороходов @after метод при условии, что TestWatcher является базовым классом для Rules.

Из-за того, что правила установлены, вы не можете иметь правило, которое приходит после @before или до @after. Вы можете думать о правилах, таких как оболочки, которые вы накладываете на метод тестирования. Первая оболочка для игры - @before/@after. После этого применяются @rules. (Ссылка @Troy в Apply '@Rule' after each '@Test' and before each '@After' in JUnit)

Порядок выполнения, для одного @test, заключается в следующем

@TestWatcher starting 
@Before 
@Test 
@After 
@TestWatcher finished 
Смежные вопросы