我有一个实例,我需要使用@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(){...}
但是这只会在所有迭代结束时拉出日志,而不是在每次失败的迭代结束时拉出日志,并且由于拉出的日志失败很久,因此日志没有显示什么迹象当时正在发生。
有没有办法实现这一点并保持我的参数化输入完好无损?