对于不存在的测试套件,断言失败错误分叉的Java VM异常退出

对于不存在的测试套件,断言失败错误分叉的Java VM异常退出,java,jenkins,junit,ant,Java,Jenkins,Junit,Ant,这可能会重复一些东西,所以我已经看过了,但还没有找到有效的解决方案 我遇到的问题是,对于不存在的测试套件,我在jenkins上遇到了这个错误。下面是打印在jenkins ant构建日志中的错误 compile-tests-run: [junit] Testsuite: com.smartstream.control.engine.validation.Batch-With-Multiple-Tests [junit] Tests run: 1, Failures: 0, Erro

这可能会重复一些东西,所以我已经看过了,但还没有找到有效的解决方案

我遇到的问题是,对于不存在的测试套件,我在jenkins上遇到了这个错误。下面是打印在jenkins ant构建日志中的错误

compile-tests-run:
    [junit] Testsuite: com.smartstream.control.engine.validation.Batch-With-Multiple-Tests
    [junit] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec
    [junit] 
    [junit] Testcase: null took 0 sec
    [junit]     Caused an ERROR
    [junit] Forked Java VM exited abnormally. Please note the time in the report does not reflect the time until the VM exit.
    [junit] junit.framework.AssertionFailedError: Forked Java VM exited abnormally. Please note the time in the report does not reflect the time until the VM exit.
    [junit] 
    [junit] Running com.smartstream.control.engine.validation.Batch-With-Multiple-Tests
    [junit] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec

BUILD FAILED
u:\jenkins\workspace\control.unittests.execution.time.test\build\build.xml:256: The following error occurred while executing this line:
u:\jenkins\workspace\control.unittests.execution.time.test\engine\build\build.xml:287: Process fork failed.

Total time: 7 minutes 42 seconds
Build step 'Invoke Ant' marked build as failure
Archiving artifacts
Recording test results
[BFA] Scanning build for known causes...
[BFA] No failure causes found
[BFA] Done. 0s
Email was triggered for: Failure - Any
Sending email for trigger: Failure - Any
Sending email to: xxxxxxxx@abc.xom
Finished: FAILURE
现在,正如您所看到的,
com.smartstream.control.engine.validation.Batch上的多个测试似乎失败了
,但是我的整个工作区中没有任何这样的测试套件。我甚至在项目中的任何地方都找不到它作为文本字符串

工作区中的以下搜索未返回任何内容;

windows
也没有找到DSTR

我尝试过增加ant构建内存和permgen,但没有效果。该构建使用java 1.7.0_80-b15和ant 1.9.6运行。下面是engine/build.xml文件中的junit ant任务规范

    <junit dir="." haltonfailure="false" printsummary="yes" forkmode="once" fork="yes" showoutput="yes" failureproperty="tests.failed">
        <classpath location="${build.testclasses}" />
        <classpath location="${resources.dir}" />
        <classpath location="${common.properties}" />
        <classpath location="${common.libs}" />

        <formatter type="xml" />
        <formatter type="plain" usefile="false" />
        <jvmarg value="-Demma.coverage.out.file=${build.coveragereport}/coverage.emma" />
        <jvmarg value="-Demma.coverage.out.merge=true" />
        <jvmarg value="-Xms512m" />
        <jvmarg value="-Xmx1536m" />
        <jvmarg value="-XX:MaxPermSize=512m" />
        <jvmarg value="-XX:-UseSplitVerifier"/>

        <batchtest todir="${build.report}">
            <fileset dir="${test.dir}">
                <include name="**/*Test.java" />                    
                <exclude name="${excludeTestPattern1}" />
                <exclude name="${excludeTestPattern2}" />
                <exclude name="${excludeTestPattern3}" />
                <exclude name="${excludeTestPattern4}" />
                <exclude name="${excludeTestPattern5}" />
            </fileset>
        </batchtest>
    </junit>

到目前为止我都试过了

  • 选中jenkins作业上的“在生成开始之前删除工作区”以获得完全干净的生成
  • 最初的xmx是512m,我将其更新为1024m,然后更新为1536m
  • 最初的烫发尺寸为256m,已更新为512m
  • 在ant任务中使用了
    fork
    showoutput
    属性
  • 从最初的尝试更新了java和ant版本

任何帮助都将不胜感激

我找到了解决这个问题的办法。我必须为ant启用详细日志记录,并通过它观察到以下stacktrace

Caused by: java.io.IOException: Cannot run program "u:\jenkins\tools\hudson.model.JDK\Java7\jre\bin\java.exe" (in directory "u:\jenkins\workspace\control.unittests.execution.time.test\engine"): CreateProcess error=206, The filename or extension is too long
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
    at java.lang.Runtime.exec(Runtime.java:617)
    at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
    at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:428)
    at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:442)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeAsForked(JUnitTask.java:1257)
    ... 32 more
Caused by: java.io.IOException: CreateProcess error=206, The filename or extension is too long
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:385)
    at java.lang.ProcessImpl.start(ProcessImpl.java:136)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
    ... 37 more
原因:java.io.IOException:无法运行程序“u:\jenkins\tools\hudson.model.JDK\Java7\jre\bin\java.exe”(在目录“u:\jenkins\workspace\control.unittests.execution.time.test\engine”中):CreateProcess error=206,文件名或扩展名太长
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
位于java.lang.Runtime.exec(Runtime.java:617)
位于org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
位于org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:428)
位于org.apache.tools.ant.taskdefs.Execute.Execute(Execute.java:442)
位于org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeAsForked(JUnitTask.java:1257)
... 32多
原因:java.io.IOException:CreateProcess error=206,文件名或扩展名太长
在java.lang.ProcessImpl.create(本机方法)
位于java.lang.ProcessImpl.(ProcessImpl.java:385)
在java.lang.ProcessImpl.start(ProcessImpl.java:136)
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
... 37多

由于jenkins基于构建作业名称创建工作区,因此通过它创建分叉vm太长。我改变了詹金斯的工作名称,解决了这个问题

另外,请告诉我拒绝投票的原因。带有多个测试的人工名称
批处理
是由Ant生成的,请参阅@wero,谢谢您提供的信息。你知道有什么方法可以获得更多关于这次失败的信息吗?我无法给你足够的支持。非常感谢。对于那些想知道你可以运行带有“-v”标志的ant来获得完整的输出。这是疯狂的,我给了这样一个模糊的错误,直到我这样做。。。