5

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

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

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

有任何想法吗?

4

2 回答 2

2

TestWacher方法finished()failed()@after在给定的方法之前运行是不可能的,TestWatcher它是Rules.

由于规则的设置方式,您不能拥有在 之后@before或之前出现的规则@after。您可以将规则想象成您放在测试方法上的 shell。第一个外壳是@before/@after. 此后@rules应用。(在 JUnit 中的每个 '@Test' 之后和每个 '@After' 之前的 Apply '@Rule'中引用 @Troy )

一个的执行顺序@test如下

@TestWatcher starting
@Before 
@Test
@After
@TestWatcher finished
于 2017-04-04T15:03:56.793 回答
0

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

  • @后
  • 失败()(如果失败)
  • 完成的()
于 2014-01-09T10:43:09.207 回答