Java ModelJUnit运行测试一段时间

Java ModelJUnit运行测试一段时间,java,testing,junit,model,automated-tests,Java,Testing,Junit,Model,Automated Tests,我正在一个应用程序系统上执行一些基于模型的测试,我想在指定的时间内执行测试(比如说15分钟) 请问我怎样才能做到这一点 到目前为止,我的测试仪如下所示: final Tester tester = new GreedyTester(new AgentSystemModelTests()); tester.setRandom(new Random()); tester.buildGraph(); tester.addListener(new StopOnFailureListener()); te

我正在一个应用程序系统上执行一些基于模型的测试,我想在指定的时间内执行测试(比如说15分钟)

请问我怎样才能做到这一点

到目前为止,我的测试仪如下所示:

final Tester tester = new GreedyTester(new AgentSystemModelTests());
tester.setRandom(new Random());
tester.buildGraph();
tester.addListener(new StopOnFailureListener());
tester.addListener("verbose");
tester.addCoverageMetric(new TransitionPairCoverage());
tester.addCoverageMetric(new StateCoverage());
tester.addCoverageMetric(new ActionCoverage());
tester.generate(500);
tester.printCoverage();
tester.generate(int n)
tester
类中定义为调用
generate()
n
次循环运行

为运行测试设置一段时间,考虑使用<<代码>而Road SET在时间刚过时停止,如下所示。p>

final Duration TEST_DURATION = Duration.ofMinutes(15);

final Instant startTime = Instant.now();
final Instant finishTime = startTime.plus(TEST_DURATION);

final Tester tester = new GreedyTester(new AgentSystemModelTests());
tester.setRandom(new Random());
tester.buildGraph();
tester.addListener(new StopOnFailureListener());
tester.addListener("verbose");
tester.addCoverageMetric(new TransitionPairCoverage());
tester.addCoverageMetric(new StateCoverage());
tester.addCoverageMetric(new ActionCoverage());

// This is the magic predicate for the loop
while (Instant.now().isBefore(finishTime)) {
   tester.generate();
}
tester.printCoverage();
资料来源:


再解释一下为什么要运行15分钟而不是运行一定数量的测试。你能不能让一个while循环运行15分钟并调用tester.generate(100)也许?@tkruse我有很多测试想要连续运行15分钟,我做的是
tester.generate(50000000)通过这种方式,我让测试运行了15分钟,但我只是想看看是否有一种更有效、更好的方法