我想在测试失败时截取屏幕截图,但之后运行@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 运行代码。所以现在的执行顺序是: