Java 在循环上运行参数化JUnit测试套件持续时间
我有一个测试JUnit套件,它通过套件注释运行一组测试类。我需要在循环中运行套件,直到经过定义的时间量(我从配置或自定义的持续时间注释中获得此时间长度)。测试本身使用JUnitRAM来提供数据。如何在套件完成后立即重新运行 我最初的尝试是创建一个自定义运行程序,它扩展了JUnit Suite运行程序:Java 在循环上运行参数化JUnit测试套件持续时间,java,testing,junit,junit4,Java,Testing,Junit,Junit4,我有一个测试JUnit套件,它通过套件注释运行一组测试类。我需要在循环中运行套件,直到经过定义的时间量(我从配置或自定义的持续时间注释中获得此时间长度)。测试本身使用JUnitRAM来提供数据。如何在套件完成后立即重新运行 我最初的尝试是创建一个自定义运行程序,它扩展了JUnit Suite运行程序: @RunWith(Suite.class) @Suite.SuiteClasses({Suite1.class,Suite2.class}) public class RepeatingSuite
@RunWith(Suite.class)
@Suite.SuiteClasses({Suite1.class,Suite2.class})
public class RepeatingSuite extends Suite {
// Other stuff...
@Override
public void run(RunNotifier notifier){
/* hasDurationElapsed is a simple method
* comparing current time vs the start time
* which is set in the constructor */
while (!hasDurationElapsed()) {
super.run(notifier);
}
}
}
这在循环上运行测试时成功,但是由于某种原因,它似乎与JUnitParams冲突,因为我的测试使用@FileParameters
注释,并且在循环中第一次迭代套件之后,参数始终为空。因此,我假设它不会在套件每次迭代的csv数据文件开始时重新启动,而是从它停止的位置继续启动(尽管我不确定这到底是怎么可能的…)
有没有比创建自定义测试运行程序更简单的方法来实现这一点?还是我在试跑中犯了一个明显的错误?我使用的方法在原则上似乎是可行的,但是它不能很好地与JUnit参数配合使用
我意识到这可以通过外部脚本很容易地完成,但不幸的是,我必须在“测试框架”内完成。help@nullpointer不幸的是,repeat用于指定的迭代次数,而我需要它根据一个条件(无论经过多少时间)重复使用某种调度器在一定时间后重新启动测试怎么样?