在@After之前运行TestWatcher

时间:2013-08-02 03:22:51

标签: java selenium junit

我想在测试失败时截取屏幕截图,但是,之后,运行@After方法。

有可能这样做吗?使用TestWatcher,方法failed()在@After之后运行。

此外,我无法将@After内容传递给TestWatcher finished()因为我有一个super.afterTest()来调用@After。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

TestWacher方法finished()failed()无法在@after方法之前运行,因为TestWatcher是基础Rules的课程。

由于设置规则的方式,您不能拥有@before之后或@after之前的规则。您可以考虑将测试方法放在shell上的规则。第一个继续进行的shell是@before/@after。此后应用@rules。 (参考Apply '@Rule' after each '@Test' and before each '@After' in JUnit中的@Troy)

一个@test的执行顺序如下

@TestWatcher starting
@Before 
@Test
@After
@TestWatcher finished

答案 1 :(得分:0)

我遇到了同样的问题并更改了我的代码,以便在新规则的finished()方法中运行@After中的代码。所以执行顺序现在是:

  • @After
  • 失败()(如果失败)
  • 完成()