Junit maven构建错误(maven-surefire-plugin:2.19.1:测试失败:分叉进程中有错误) [英] Junit maven build error (maven-surefire-plugin:2.19.1:test failed: There was an error in the forked process)

查看:4013
本文介绍了Junit maven构建错误(maven-surefire-plugin:2.19.1:测试失败:分叉进程中有错误)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个示例struts 2项目&参考的J单元测试案例链接



以下是我的POM文件。

 <?xml version =1.0?> 
< project xsi:schemaLocation =http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdxmlns = http://maven.apache.org/POM/4.0.0
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance>
< modelVersion> 4.0.0< / modelVersion>
< groupId> au.com.woolworths< / groupId>
< artifactId> struts_junit< / artifactId>
< version> 0.0.1-SNAPSHOT< / version>
< packaging> war< / packaging>
< name> struts_junit Maven Webapp< / name>
< url> http://maven.apache.org< / url>
<依赖关系>
<! - https://mvnrepository.com/artifact/junit/junit - >
<依赖关系>
< groupId> junit< / groupId>
< artifactId> junit< / artifactId>
< version> 3.8.1< / version>
< / dependency>
<依赖关系>
< groupId> org.apache.struts< / groupId>
< artifactId> struts2-core< / artifactId>
< version> 2.3.4< / version>
< / dependency>
<依赖关系>
< groupId> org.apache.struts< / groupId>
< artifactId> struts2-junit-plugin< / artifactId>
< version> 2.3.4< / version>
< / dependency>
<! - https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api - >
<依赖关系>
< groupId> javax.servlet< / groupId>
< artifactId> javax.servlet-api< / artifactId>
< version> 3.0.1< / version>
< / dependency>
<依赖关系>
< groupId> javax.servlet.jsp< / groupId>
< artifactId> jsp-api< / artifactId>
< version> 2.2< / version>
< / dependency>
< / dependencies>

< build>
< finalName> struts_junit< / finalName>
< plugins>
< plugin>
< artifactId> maven-compiler-plugin< / artifactId>
< version> 3.5.1< / version>
< configuration>
< source> 1.6< / source>
< target> 1.6< / target>
< / configuration>
< / plugin>
< plugin>
< artifactId> maven-war-plugin< / artifactId>
< version> 3.0.0< / version>
< configuration>
< warSourceDirectory> WebContent< / warSourceDirectory>
< / configuration>
< / plugin>
< plugin>
< groupId> org.eclipse.m2e< / groupId>
< artifactId>生命周期映射< / artifactId>
< version> 1.0.0< / version>
< configuration>
< lifecycleMappingMetadata>
< pluginExecutions>
< pluginExecution>
< pluginExecutionFilter>
< groupId>
org.apache.maven.plugins
< / groupId>
< artifactId>
maven-toolchains-plugin
< / artifactId>
< versionRange>
[1.1,)
< / versionRange>
< goals>
< goal>工具链< / goal>
< / goals>
< / pluginExecutionFilter>
< action>
< ignore>< / ignore>
< / action>
< / pluginExecution>
< / pluginExecutions>
< / lifecycleMappingMetadata>
< / configuration>
< / plugin>
< plugin>
< groupId> org.apache.maven.plugins< / groupId>
< artifactId> maven-surefire-plugin< / artifactId>
< version> 2.19.1< / version>
<依赖关系>
<依赖关系>
< groupId> org.apache.maven.surefire< / groupId>
< artifactId> surefire-junit47< / artifactId>
< version> 2.19.1< / version>
< / dependency>
<依赖关系>
< groupId> org.hamcrest< / groupId>
< artifactId> hamcrest-all< / artifactId>
< version> 1.3< / version>
< / dependency>
< / dependencies>
< configuration>
< parallel>方法< / parallel>
< threadCount> 10< / threadCount>
< useSystemClassLoader> false< / useSystemClassLoader>
< / configuration>
< / plugin>
< / plugins>
< / build>
< / project>

我可以在eclipse中成功执行测试用例,但在maven构建期间,我正在以下错误。

  ---------------------- --------------------------------- 
测试
-------- -----------------------------------------------

结果:

测试运行:0,失败:0,错误:0,跳过:0

[INFO] -------- -------------------------------------------------- --------------
[INFO] BUILD FAILURE
[INFO] -------------------- -------------------------------------------------- -
[INFO]总时间:12.768 s
[INFO]完成时间:2017-02-03T11:22:46 + 11:00
[INFO] Final Memory:11M / 168M
[INFO] ------------------------------------------- -----------------------------
[ERROR]无法执行目标org.apache.maven.plugins:maven- surefire-plugin:2.19.1:项目上的测试(默认测试)struts_junit:执行目标org.apach的默认测试
e.maven.plugins:maven-su refire-plugin:2.19.1:测试失败:分叉进程有一个错误
[ERROR] java.lang.NoClassDefFoundError:org / junit / runner / notification / RunListener
[ERROR]在java .lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:763)中的[ERROR]
java.security.SecureClassLoader.defineClass(SecureClassLoader)中的[ERROR] java:142)
java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
[ERROR]在java.net.URLClassLoader.access $ 100(URLClassLoader.java:73)
b $ b java.net.URLClassLoader $ 1.run(URLClassLoader.java:368)上的[ERROR]
java.net.URLClassLoader $ 1.run(URLClassLoader.java:362)中的[ERROR]
[ ERROR] java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(URLClassLoader.java:361)上的[ERROR]
java.lang.ClassLoader中的[ERROR]。 loadClass(ClassLoader.java:424)
[ERROR]在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331)
[ERROR]在java .lang.ClassLoader.loadClass(ClassLoader.java:357)
java.lang.Class.getDeclaredConstructors0(Native Method)中的[ERROR]
java.lang.Class.privateGetDeclaredConstructors(Class。 java:2671)
java.lang.Class.getConstructor0(Class.java:3075)中的[ERROR]
java.lang.Class.getConstructor(Class.java:1825)中的[ERROR]
[ERROR]在org.apache.maven.surefire.util.ReflectionUtils.getConstructor(ReflectionUtils.java:79)
[ERROR]在org.apache.maven.surefire.util.ReflectionUtils.instantiateOneArg(ReflectionUtils。 java:130)
[错误]在org.apache.maven.surefire.booter.ForkedBooter.createProviderInCurrentClassloader(ForkedBooter.java:321)
[错误]在org.apache.maven.surefire.booter。 ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
[错误]在org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
[错误]在org.apache。 maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
[错误]造成的:java .lang.ClassNotFoundException:java.lang.ClassLoader中的
[ERROR]。 loadClass(ClassLoader.java:424)
[错误]在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331)
[ERROR]在java.lang.ClassLoader.loadClass(ClassLoader。 java:357)
[ERROR] ... 22更多
[错误] - > [帮助1]
[ERROR]
[ERROR]要查看错误的完整堆栈跟踪,请使用-e开关重新运行Maven。
[ERROR]使用-X开关重新运行Maven以启用完整的调试日志记录。
[ERROR]
[ERROR]有关错误和可能的解决方案的更多信息,请阅读以下文章:
[错误] [帮助1] http://cwiki.apache.org / confluence / display / MAVEN / PluginExecutionException

有人可以建议我为什么会出现此错误以及如何解决此问题问题?

解决方案

更新您的依赖应该解决这个问题 -

 <依赖性> 
< groupId> junit< / groupId>
< artifactId> junit< / artifactId>
< version> 3.8.1< / version>
< / dependency>

 <依赖性> 
< groupId> junit< / groupId>
< artifactId> junit< / artifactId>
< version> 4.12< / version>
< / dependency>

Javadoc for RunListener ,该类在 4.0 中引入。此外,请确保相同的工件不能通过不同的版本进行转移。


I created a sample struts 2 project & J-unit test case by referring the link.

Below is my POM file.

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>au.com.woolworths</groupId>
  <artifactId>struts_junit</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>struts_junit Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
    </dependency>
    <dependency>
       <groupId>org.apache.struts</groupId>
       <artifactId>struts2-core</artifactId>
       <version>2.3.4</version>
      </dependency>
     <dependency>
       <groupId>org.apache.struts</groupId>
       <artifactId>struts2-junit-plugin</artifactId>
       <version>2.3.4</version>
      </dependency>
     <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>struts_junit</finalName>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.eclipse.m2e</groupId>
        <artifactId>lifecycle-mapping</artifactId>
        <version>1.0.0</version>
        <configuration>
        <lifecycleMappingMetadata>
             <pluginExecutions>
                <pluginExecution>
                    <pluginExecutionFilter>
                        <groupId>
                            org.apache.maven.plugins
                        </groupId>
                        <artifactId>
                            maven-toolchains-plugin
                        </artifactId>
                        <versionRange>
                            [1.1,)
                        </versionRange>
                        <goals>
                            <goal>toolchain</goal>
                        </goals>
                    </pluginExecutionFilter>
                    <action>
                        <ignore></ignore>
                    </action>
                </pluginExecution>
            </pluginExecutions>
          </lifecycleMappingMetadata>
        </configuration>
      </plugin>
      <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <dependencies>
              <dependency>
                <groupId>org.apache.maven.surefire</groupId>
                <artifactId>surefire-junit47</artifactId>
                <version>2.19.1</version>
              </dependency>
              <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-all</artifactId>
                <version>1.3</version>
              </dependency>
            </dependencies>
            <configuration>
              <parallel>methods</parallel>
              <threadCount>10</threadCount>
              <useSystemClassLoader>false</useSystemClassLoader>
            </configuration>
         </plugin>
    </plugins>
  </build>
</project>

I am able to execute the test-case successfully in eclipse, but during maven build, I am getting the below error.

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

Results :

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

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.768 s
[INFO] Finished at: 2017-02-03T11:22:46+11:00
[INFO] Final Memory: 11M/168M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project struts_junit: Execution default-test of goal org.apach
e.maven.plugins:maven-surefire-plugin:2.19.1:test failed: There was an error in the forked process
[ERROR] java.lang.NoClassDefFoundError: org/junit/runner/notification/RunListener
[ERROR] at java.lang.ClassLoader.defineClass1(Native Method)
[ERROR] at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
[ERROR] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
[ERROR] at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
[ERROR] at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
[ERROR] at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
[ERROR] at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
[ERROR] at java.security.AccessController.doPrivileged(Native Method)
[ERROR] at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
[ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[ERROR] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
[ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[ERROR] at java.lang.Class.getDeclaredConstructors0(Native Method)
[ERROR] at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
[ERROR] at java.lang.Class.getConstructor0(Class.java:3075)
[ERROR] at java.lang.Class.getConstructor(Class.java:1825)
[ERROR] at org.apache.maven.surefire.util.ReflectionUtils.getConstructor(ReflectionUtils.java:79)
[ERROR] at org.apache.maven.surefire.util.ReflectionUtils.instantiateOneArg(ReflectionUtils.java:130)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.createProviderInCurrentClassloader(ForkedBooter.java:321)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
[ERROR] Caused by: java.lang.ClassNotFoundException: org.junit.runner.notification.RunListener
[ERROR] at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
[ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[ERROR] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
[ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[ERROR] ... 22 more
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

Can someone advice me why this error occurs and how to resolve this issue ?

解决方案

Updating your dependency should solve this -

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
</dependency>

to

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

As mentioned in the Javadoc for RunListener, the class was introduced in version 4.0. Also, do make sure the same artifact is not resolved with different version transitively.

这篇关于Junit maven构建错误(maven-surefire-plugin:2.19.1:测试失败:分叉进程中有错误)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆