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

时间:2017-03-06 18:11:42

标签: java testing junit junit4

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

我最初的尝试是创建一个自定义运行器,它扩展了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注释,并且在循环中套件的第一次迭代后参数始终为null 。因此我假设它不会在csv数据文件的开头为套件的每次迭代重新启动,但实际上只是从它停止的地方继续(尽管我不确定这实际上是怎么可能的......)

有没有比创建自定义测试运行器更简单的方法来实现这一目标?或者我在测试跑步者中犯了一个明显的错误?我使用过的方法似乎原则上有效,但它与JUnit Params并不相称。

我意识到这可以通过外部脚本轻松完成,但不幸的是我必须在"测试框架内完成#34;。

0 个答案:

没有答案