0

我有一个实例,我需要使用@RunWith(Parameterized.class) 运行相同的@Test 数百次迭代。每个大约需要 10 分钟,所以这个整体测试需要一天的大部分时间。

问题是,我们运行它的系统只保留了大约 30 分钟的日志,所以如果迭代在测试中间失败,除了 java 为失败提供的堆栈跟踪之外,我们真的没有任何其他东西,并且它提供的关于我们正在测试的系统状态的信息非常少。

我尝试向测试中添加这样的规则:

...
@Rule
public TestWatcher logPuller = new TestWatcher() {
     @Override
     protected void failed(final Throwable e, final Description description)
     {
         downloadLogs(description);
     }
};
...
@Parameters()
public static Collection<Object[]> generateData() {
    return Arrays.asList(new Object[][] {.....}
...
@Test
public void runTest(){...}

但这只会在所有迭代结束时提取日志,而不是在每次失败的迭代结束时提取日志,并且失败已经从拉出的日志中消失了,所以日志没有显示发生了什么的迹象时间。

有没有办法做到这一点并保持我的参数化输入完好无损?

4

0 回答 0