【问题标题】:how many max parameters junit perameterized test can handle?junit参数化测试可以处理多少个最大参数?
【发布时间】:2016-10-10 18:00:13
【问题描述】:

我总共有 2799030 参数存储在 Iterable<Object[]> 中,我期待 junit 构建/启动这些测试。但它只是在加载Iterable<Object[]> 中的所有参数后立即挂起 - 请参见下面的屏幕截图:

它适用于少量参数(5000-10000)。我还尝试使用更高的 JVM 内存运行 (-Xms1024M -Xmx4096M)

更新:我还尝试从 CLI 而不是 IDE 运行,从下面的错误看来我应该使用更多内存运行或更改我的设计以小批量运行。 - 想法?

There was 1 failure:
1) initializationError(test.TestBuilder$buildTestSuites)
java.lang.OutOfMemoryError: GC overhead limit exceeded
        at java.util.Arrays.copyOf(Unknown Source)
        at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
        at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)
        at java.lang.AbstractStringBuilder.append(Unknown Source)
        at java.lang.StringBuilder.append(Unknown Source)
        at java.lang.reflect.Method.specificToStringHeader(Unknown Source)
        at java.lang.reflect.Executable.sharedToString(Unknown Source)
        at java.lang.reflect.Method.toString(Unknown Source)
        at org.junit.internal.MethodSorter$2.compare(MethodSorter.java:33)
        at org.junit.internal.MethodSorter$2.compare(MethodSorter.java:28)
        at org.junit.internal.MethodSorter$1.compare(MethodSorter.java:20)
        at org.junit.internal.MethodSorter$1.compare(MethodSorter.java:14)
        at java.util.TimSort.countRunAndMakeAscending(Unknown Source)
        at java.util.TimSort.sort(Unknown Source)
        at java.util.Arrays.sort(Unknown Source)
        at org.junit.internal.MethodSorter.getDeclaredMethods(MethodSorter.java:56)
        at org.junit.runners.model.TestClass.scanAnnotatedMembers(TestClass.java:65)
        at org.junit.runners.model.TestClass.<init>(TestClass.java:57)
        at org.junit.runners.ParentRunner.createTestClass(ParentRunner.java:88)
        at org.junit.runners.ParentRunner.<init>(ParentRunner.java:83)
        at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65)
        at org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters.<init>(BlockJUnit4ClassRunnerWithParameters.java:27)
        at org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParametersFactory.createRunnerForTestWithParameters(BlockJUnit4ClassRunnerWithParametersFactory.java:16)
        at org.junit.runners.Parameterized.createRunnersForParameters(Parameterized.java:313)
        at org.junit.runners.Parameterized.<init>(Parameterized.java:248)
        at pps.test.Parallelized.<init>(Parallelized.java:50)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
        at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)

FAILURES!!!
Tests run: 1,  Failures: 1

【问题讨论】:

    标签: java junit junit4 parameterized


    【解决方案1】:

    更改设计器执行测试

    例如:

    • 在课堂测试中创建 10 个方法。
    • 每个方法运行 10000 个项目。
    • 在并行测试中运行。
    • 在消耗时寻找或做物品。

    如果你不能这样做。 你需要更多的内存来进行测试,

    【讨论】:

      猜你喜欢
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多