JUnit使用大量测试进行参数化

时间:2016-03-14 15:13:44

标签: java junit

我有json文件,输入数据结束预期结果。我使用junit和RunWith(Prametrized.class)。有超过1000个(输入,expected_result)对,140-150测试后没有空闲RAM(我的机器有32Gb ram)。有什么方法可以解决这个问题吗?喜欢在单独的过程中开始每个测试或其他...

3 个答案:

答案 0 :(得分:1)

Parameterized的javadoc声明如下:

  

运行参数化测试类时,会为测试方法和测试数据元素的交叉产品创建实例。

对于每个实例,JUnit将跟踪您的测试结果您的输入参数,这些参数将保留在内存中,直到整个测试结束。

您可以尝试通过将多个测试合并为一个或通过减少测试数据来最小化内存占用,但由于您在仅经过几次测试后获得了OOM,因此最好考虑另一种加载方式您的测试数据(例如,通过从文件系统手动加载它们并在循环中处理它们)。

但请记住,您应该尽可能简化您的(单元)测试。

答案 1 :(得分:1)

对于单个测试用例,

1000看起来像很多参数。你确定你需要所有这些吗?

恕我直言,你应该有正常情况和边界的一些数据。要么你试图“覆盖”你的代码,要么你有很多边界,在这种情况下你应该将你的代码分解成更多的单位。

如果您想要覆盖许多数据的一般模式,也许您可​​以尝试JUnit Theories来概括您的测试。

希望这会有所帮助。

答案 2 :(得分:-1)

好吧,我在tearDown方法中添加System.gc()解决了我的问题。现在它工作正常。