Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在循环上运行参数化JUnit测试套件持续时间_Java_Testing_Junit_Junit4 - Fatal编程技术网

Java 在循环上运行参数化JUnit测试套件持续时间

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

我有一个测试JUnit套件,它通过套件注释运行一组测试类。我需要在循环中运行套件,直到经过定义的时间量(我从配置或自定义的持续时间注释中获得此时间长度)。测试本身使用JUnitRAM来提供数据。如何在套件完成后立即重新运行

我最初的尝试是创建一个自定义运行程序,它扩展了JUnit Suite运行程序:

@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用于指定的迭代次数,而我需要它根据一个条件(无论经过多少时间)重复使用某种调度器在一定时间后重新启动测试怎么样?