当前位置: 首页 > 知识库问答 >
问题:

运行Cucumber测试失败,出现OutOfMemoryError: Java堆空间异常

朱毅
2023-03-14

我正在使用cucumber应用BDD方法,这很棒!

问题是我的测试套件变得越来越大,现在我得到了下面的异常,它由于错误的原因使我的测试失败...

我正在使用所有排序或cucumber功能,例如:背景,场景大纲和简单场景。我像这样运行测试:

@RunWith(Cucumber.class)
@Cucumber.Options(features={"...../controller1"})
public class RunCukes1Test {
}

我将我的特征文件分割到不同的目录(控制器1,控制器2...)和跑步者(RunCukes1Test,RunCukes2Test...),但这都无济于事。

当我运行每个测试本身时,一切正常,但当我使用mave lifecycle test运行所有测试时,它失败了。有人知道Java Cucumber中避免这类问题的最佳实践吗?

    Tests run: 5896, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 33.082 sec
Running com.kenshoo.urlbuilder.appservice.controller.RunCukes4Test

Tests run: 11838, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 80.833 sec
Exception in thread "Thread-73" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2882)
    at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:515)
    at java.lang.StringBuffer.append(StringBuffer.java:306)
    at java.io.BufferedReader.readLine(BufferedReader.java:345)
    at java.io.BufferedReader.readLine(BufferedReader.java:362)
    at org.codehaus.plexus.util.cli.StreamPumper.run(StreamPumper.java:129)
Exception in thread "ThreadedStreamConsumer" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOfRange(Arrays.java:3209)
    at java.lang.String.<init>(String.java:215)
    at java.lang.StringBuffer.toString(StringBuffer.java:585)
    at org.apache.maven.surefire.report.PrettyPrintXMLWriter.escapeXml(PrettyPrintXMLWriter.java:167)
    at org.apache.maven.surefire.report.PrettyPrintXMLWriter.addAttribute(PrettyPrintXMLWriter.java:178)
    at org.apache.maven.surefire.shade.org.codehaus.plexus.util.xml.Xpp3DomWriter.write(Xpp3DomWriter.java:50)
    at org.apache.maven.surefire.shade.org.codehaus.plexus.util.xml.Xpp3DomWriter.write(Xpp3DomWriter.java:55)
    at org.apache.maven.surefire.shade.org.codehaus.plexus.util.xml.Xpp3DomWriter.write(Xpp3DomWriter.java:39)
    at org.apache.maven.surefire.report.XMLReporter.testSetCompleted(XMLReporter.java:128)
    at org.apache.maven.surefire.report.MulticastingReporter.testSetCompleted(MulticastingReporter.java:51)
    at org.apache.maven.surefire.report.TestSetRunListener.testSetCompleted(TestSetRunListener.java:115)
    at org.apache.maven.plugin.surefire.booterclient.output.ForkClient.consumeLine(ForkClient.java:97)
    at org.apache.maven.plugin.surefire.booterclient.output.ThreadedStreamConsumer$Pumper.run(ThreadedStreamConsumer.java:67)
    at java.lang.Thread.run(Thread.java:662)

Results :

Tests run: 11790, Failures: 0, Errors: 0, Skipped: 0

共有1个答案

易炳
2023-03-14

在cucumber测试运行后,我得到了另一个 java 堆空间异常的答案。你可以在这里看到它 - 相关问题

我的理论是-XX:MaxPermSize是Cucumber运行期间的一个因素,因为Cucumber生成测试代码,PermSize与代码量有关,如java中的PermSize

-Xmx是后Cucumber运行的一个因素,同时解析测试结果。

因此,解决方案是在两者和实际可用内存之间找到平衡。

 类似资料:
  • 问题内容: 使用Jenkins进行构建时出现以下异常。运行Cucumber测试后会引发此异常。 谁能说出Java堆空间上失败的确切位置? 您有什么办法可以解决吗? 一些背景:在Cucumber测试期间我有一个Java堆空间,在增加内存后,Cucumber测试通过了,但是我在此之后立即得到了这个Java堆空间。 谢谢, 骗子 问题答案: 进入Jenkins设置并将环境变量添加到中。测试完成后,似乎正

  • 我得到以下异常时,建设使用詹金斯。运行Cucumber测试后会引发此异常。 有人能说出java堆空间中失败的确切位置吗? 利奥尔

  • 我正在遵循快速入门指南,但我得到了一个错误 除非说明书遗漏了什么,否则我想我已经把每件事都做得不折不扣了 com.parse.parserequest$ParserequestException:com.parse.parserequest.newTemporaryException(parserequest.java:368)在com.parse.parserequest$2处发生I/O失败。然

  • 我已经建立了一个cucumberjava硒项目,我想在我的管道中添加重新运行阶段。使用运行器AllTestRunner中的@rerun插件.java我能够创建一个仅失败测试的重新运行.txt并使用maven-surefire-plugin,我创建了一个第二个运行器FailedRunner.java用于自动执行,仅失败的测试。 问题是FailedRunner.java不仅执行失败的测试,还执行All

  • 下面是我的赛跑课, 配置失败:@AfterClass tearDownClass java.lang.NullPoInterException at Cucumber.api.testng.AbstractTestngCucumberTests.tearDownClass(AbstractTestngCucumberTests.java:34)at Sun.Reflect.NativeMethod

  • 我试图运行cucumber测试,但我得到以下异常。我用那些罐子和它们的版本 这是我的项目: 这是testRunner类代码: 场景:当用户导航到登录页面并输入用户名和密码时,使用给定的有效凭据成功登录,并在主页上输入用户名和密码,然后显示消息,登录成功 场景:成功注销当用户从应用程序注销时,消息显示注销成功