我想在测试失败时截取屏幕截图,但之后运行@After 方法。
有可能这样做吗?使用 TestWatcher,方法 failed() 在 @After 之后运行。
此外,我无法将 @After 内容传递给 TestWatcher finished(),因为我有一个 super.afterTest() 可以调用 @After。
有任何想法吗?
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
我遇到了同样的问题并更改了我的代码以在新规则的finished() 方法中从@After 运行代码。所以现在的执行顺序是: