我正在使用生成的junit测试开发项目。执行大约 8 200 000 junit测试。我有一个进行测试的测试和一个生成数据的interator来测试" next()"方法。但我发现,JUnit首先为所有测试生成所有参数,当这些参数全部可用时,实际测试就开始了。 不幸的是,执行如此大量的测试需要花费2小时来生成所有测试用例,并以OutOfMemoryError结束,即使使用Xmx16g和Xms1g也是如此。但是当一个接一个地执行而没有先生成它们时它就可以了(当我有一个测试生成测试数据并立即测试时)。但这只是对所有人的一次考验。我希望它可以作为多个测试使用,就像JUnit正常工作一样,但不首先预生成数据。
在迭代器上调用next()时,JUnit(4/5)中是否有任何方法执行测试?只要hasNext()返回true,就执行测试吗?
我知道在这样的例子中,没有办法显示测试进度但对我来说没问题。我只是想执行它们然后当它们完成时我想查看html报告。唯一的问题是,有时我想在eclipse中执行测试,然后在eclipse中查看结果(如果可能的话)。
答案 0 :(得分:0)
我没有对这个主题进行深入搜索,但是从我发现的事实证明,JUnit 4无法做到这一点。它必须首先预先生成params,处理它们生成测试用例然后执行它们。
对于只通过单个int进行测试并执行无效的测试的简单测试,生成200万个int会使整个事件等待超过1h(我只是在1h后停止等待)甚至第一次测试都不会开始执行。 / p>
因此,执行如此大量测试的唯一方法是在单个测试中执行它们,然后手动存储测试结果。
换句话说:在junit测试用例中编写自己的测试执行机制。
我会在这里留下这个答案。如果您亲爱的读者知道如何克服这个问题(可能在比JUnit 4更新的JUnit中),请发表答案。