我有一个实例,我需要使用@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(){...}
但这只会在所有迭代结束时提取日志,而不是在每次失败的迭代结束时提取日志,并且失败已经从拉出的日志中消失了,所以日志没有显示发生了什么的迹象时间。
有没有办法做到这一点并保持我的参数化输入完好无损?