Java 在JUnit测试到来时执行大量参数化测试,而不是在';我们都有空

Java 在JUnit测试到来时执行大量参数化测试,而不是在';我们都有空,java,eclipse,unit-testing,junit,parameterized,Java,Eclipse,Unit Testing,Junit,Parameterized,我正在处理一个生成junit测试的项目。大约有820000个junit测试要执行。我有一个测试来进行测试,还有一个interator生成数据来测试“next()”方法。但我发现JUnit首先为所有测试生成所有参数,当这些参数都可用时,实际测试就开始了。 不幸的是,执行如此大量的测试需要2个多小时才能生成所有测试用例,即使使用Xmx16g和Xms1g,最终也会出现OutOfMemoryError。但是,当一个接一个地执行而不首先生成所有测试时,就可以了(当我有一个测试生成测试数据并立即进行测试时)

我正在处理一个生成junit测试的项目。大约有820000个junit测试要执行。我有一个测试来进行测试,还有一个interator生成数据来测试“next()”方法。但我发现JUnit首先为所有测试生成所有参数,当这些参数都可用时,实际测试就开始了。 不幸的是,执行如此大量的测试需要2个多小时才能生成所有测试用例,即使使用Xmx16g和Xms1g,最终也会出现OutOfMemoryError。但是,当一个接一个地执行而不首先生成所有测试时,就可以了(当我有一个测试生成测试数据并立即进行测试时)。但这只是对所有人的一个考验。我希望它可以作为多个测试使用,就像JUnit通常做的那样,但不需要先预生成数据

JUnit(4/5)中是否有任何方法可以在每次对迭代器调用next()时执行测试?只要hasNext()返回true,就执行测试


我知道在这样的例子中,无法显示测试的进度,但这对我来说没关系。我只想执行它们,当它们完成后,我想看看html报告。唯一的问题是,有时我想在eclipse中执行测试,然后在eclipse中查看结果(如果可能)。

我没有对这个主题进行深入的搜索,但从我已经发现的情况来看,JUnit 4不能做这样的事情。它必须首先预生成参数,处理它们生成测试用例,然后执行它们

对于只传递单个int的简单测试,并执行不执行任何操作的测试,生成200万int将使整个测试等待1小时以上(我只是在1小时后停止等待),甚至第一个测试也不会开始执行

所以执行如此大量测试的唯一方法是在单个测试中执行它们,然后手动存储测试结果

换句话说:在junit测试用例中编写您自己的测试执行机制


我把这个答案留在这里。如果您亲爱的读者知道克服这个问题的方法(可能是在比JUnit 4更新的JUnit中),请发布一个答案。

我没有对这个主题进行深入搜索,但从我已经发现的情况来看,JUnit 4无法做到这一点。它必须首先预生成参数,处理它们生成测试用例,然后执行它们

对于只传递单个int的简单测试,并执行不执行任何操作的测试,生成200万int将使整个测试等待1小时以上(我只是在1小时后停止等待),甚至第一个测试也不会开始执行

所以执行如此大量测试的唯一方法是在单个测试中执行它们,然后手动存储测试结果

换句话说:在junit测试用例中编写您自己的测试执行机制

我把这个答案留在这里。如果您亲爱的读者知道克服这个问题的方法(可能是在比JUnit4更新的JUnit中),请发布一个答案