为了简化我要问的问题:什么是测试失败以及如何纠正?

我是Maven的新手,我正试图使图形绘图应用程序Jzy3d在我的计算机上工作。我已经将所有插件更新为父模块和子模块的POM文件中的最新版本,并检查Maven是否指向我已安装的最新JRE(它是)。

我的依存关系树也很好,它涵盖了在本论坛和其他地方看到过此错误的许多途径。

我根本无法隔离问题。

运行mvn package -e时的错误消息如下:

D:\Program Files\jzy3d-api-master>mvn package -e
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO]
------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Jzy3d Master Project
[INFO] JDT core (fork of https://github.com/yonatang/JDT)
[INFO] Jzy3d API
[INFO] Jzy3d SWT Tools
[INFO] Jzy3d Tutorials
[INFO]
[INFO]
------------------------------------------------------------------------
[INFO] Building Jzy3d Master Project 0.9.2-SNAPSHOT
[INFO]
------------------------------------------------------------------------
[INFO]
[INFO]
------------------------------------------------------------------------
[INFO] Building JDT core (fork of https://github.com/yonatang/JDT)
0.9.2-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ jzy3d-jdt-core ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\Program Files\jzy3d-api-master\jzy3d-jdt-core\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ jzy3d-jdt-core ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ jzy3d-jdt-core ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 18 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.3:testCompile (default-testCompile) @ jzy3d-jdt-core ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.19.1:test (default-test) @ jzy3d-jdt-core ---
[INFO] Surefire report directory: D:\Program Files\jzy3d-api-master\jzy3d-jdt-core\target\surefire-reports
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running il.ac.idc.jdt.SmokeTest Configuring TestNG with: TestNG60Configurator Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 2.639 sec <<< FAILURE! - in il.ac.idc.jdt.SmokeTest shouldRunOnExampleData(il.ac.idc.jdt.SmokeTest)  Time elapsed: 0.412 sec  <<< FAILURE! java.lang.AssertionError: t1_1000.tsin trangulation is correct for smf
        at il.ac.idc.jdt.SmokeTest.shouldRunOnExampleData(SmokeTest.java:28)
Results :
Failed tests:   SmokeTest.shouldRunOnExampleData:28 t1_1000.tsin trangulation is correct for smf
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

[INFO]
------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Jzy3d Master Project ............................... SUCCESS [  0.022 s]
[INFO] JDT core (fork of https://github.com/yonatang/JDT) . FAILURE [  8.853 s]
[INFO] Jzy3d API .......................................... SKIPPED
[INFO] Jzy3d SWT Tools .................................... SKIPPED
[INFO] Jzy3d Tutorials .................................... SKIPPED
[INFO]
------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 9.772 s
[INFO] Finished at: 2016-01-13T11:56:26+00:00
[INFO] Final Memory: 8M/22M
[INFO]
------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project jzy3d-jdt-core: There are test failures.
[ERROR]
[ERROR] Please refer to D:\Program Files\jzy3d-api-master\jzy3d-jdt-core\target\surefire-reports for the individual test results.
[ERROR] -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project jzy3d-jdt-core: There are test failures.
Please refer to D:\Program Files\jzy3d-api-master\jzy3d-jdt-core\target\surefire-reports for the individual test results.
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.apache.maven.plugin.MojoFailureException: There are test failures.
Please refer to D:\Program Files\jzy3d-api-master\jzy3d-jdt-core\target\surefire-reports for the individual test results.
        at org.apache.maven.plugin.surefire.SurefireHelper.reportExecution(SurefireHelper.java:91)
        at org.apache.maven.plugin.surefire.SurefirePlugin.handleSummary(SurefirePlugin.java:320)
        at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:892)
        at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:755)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
        ... 20 more [ERROR] [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/MojoFailureException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR]   mvn <goals> -rf :jzy3d-jdt-core

我的父POM文件是:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.jzy3d</groupId>
    <artifactId>jzy3d-master</artifactId>
    <version>0.9.2-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Jzy3d Master Project</name>
  <url>http://www.jzy3d.org</url>
  <description>A java API to draw 3d charts.</description>
  <developers>
    <developer>
      <id>martin.pernollet</id>
      <name>Martin Pernollet</name>
      <email>[email protected]</email>
      <url>http://twitter.com/jzy3d</url>
    </developer>
    <developer>
      <id>nils.hoffmann</id>
      <name>Nils Hoffmann</name>
    </developer>
    <developer>
      <id>juan.barandiaran</id>
      <name>Juan Barandiaran</name>
    </developer>
  </developers>

  <licenses>
    <license>
      <name>The (New) BSD License</name>
      <url>http://www.opensource.org/licenses/bsd-license.php</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <scm>
    <connection>scm:git:git://github.com/jzy3d/jzy3d-api</connection>
  </scm>
  <issueManagement>
    <system>Github</system>
    <url>https://github.com/jzy3d/jzy3d-api/issues</url>
  </issueManagement>

  <modules>
      <module>jzy3d-api</module>
      <!-- <module>jzy3d-javafx</module> -->
      <module>jzy3d-swt</module>

      <module>jzy3d-jdt-core</module>
      <module>jzy3d-tutorials</module>
  </modules>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <version.jzy3d>0.9.2-SNAPSHOT</version.jzy3d>
    <version.java.source>1.6</version.java.source>
    <version.java.target>1.6</version.java.target>
        <version.mvn.compiler>3.0</version.mvn.compiler>
        <version.mvn.ftp>1.0-beta-6</version.mvn.ftp>
        <version.mvn.deploy>2.4</version.mvn.deploy>
    <version.mvn.javadoc>2.9.1</version.mvn.javadoc>
        <version.libs.junit>4.10</version.libs.junit>
        <version.libs.swt>4.2.1</version.libs.swt>
    </properties>

  <distributionManagement>
    <repository>
      <id>jzy3d-ftp</id>
      <name>Jzy3d Maven Folder</name>
      <url>ftp://ftp.cluster013.ovh.net/maven/releases</url>
    </repository>
    <snapshotRepository>
      <id>jzy3d-ftp</id>
      <name>Jzy3d Maven Folder SNAPSHOTS</name>
      <url>ftp://ftp.cluster013.ovh.net/maven/snapshots</url>
    </snapshotRepository>
  </distributionManagement>

<repositories>
  <repository>
     <id>jzy3d-snapshots</id>
     <name>Jzy3d Snapshots</name>
     <url>http://maven.jzy3d.org/snapshots</url>
  </repository>
  <repository>
     <id>jzy3d-releases</id>
     <name>Jzy3d Snapshots</name>
     <url>http://maven.jzy3d.org/releases</url>
  </repository>
</repositories>

  <build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                  <version>3.3</version>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>

            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <version>2.10.3</version>
              <configuration>
                <stylesheetfile>jzy3d-api/doc/layout.css</stylesheetfile>
              </configuration>
            </plugin>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19.1</version>
     </plugin>

 <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.10</version>
        <executions>
          <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>[ groupId ]</groupId>
                  <artifactId>[ artifactId ]</artifactId>
                  <version>[ version ]</version>
                  <type>[ packaging ]</type>
                  <classifier> [classifier - optional] </classifier>
                  <overWrite>[ true or false ]</overWrite>
                  <outputDirectory>[ output directory ]</outputDirectory>
                  <destFileName>[ filename ]</destFileName>
                </artifactItem>
              </artifactItems>
              <!-- other configurations here -->
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
    </pluginManagement>


    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
          <artifactId>wagon-ftp</artifactId>
          <version>${version.mvn.ftp}</version>
      </extension>
    </extensions>
  </build>
</project>

错误消息持续运行的子POM(jzy3d-jdt-core)是:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.jzy3d</groupId>
        <artifactId>jzy3d-master</artifactId>
        <version>0.9.2-SNAPSHOT</version>
    </parent>
    <artifactId>jzy3d-jdt-core</artifactId>

    <name>JDT core (fork of https://github.com/yonatang/JDT)</name>
    <description>Java Delaunay Triangulation Core Library</description>

    <properties>
        <testng.version>6.5.2</testng.version>
        <hamcrest.version>1.3.RC2</hamcrest.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.1</version>
        </dependency>

最佳答案

为了简化我要问的问题:什么是测试失败以及如何纠正?

在构建Maven项目的过程中,它会自动执行unit tests。这些是Java类,其目的是验证项目特定方法的行为。在这种情况下,事实证明您的构建中有一项测试失败。

2016年3月12日更新:此帖子中提到的问题已修复!

在Windows上运行时,jzy3d库的测试确实存在问题。我签出了他们的GitHub的管理员,并且遇到了与您相同的错误。

原因是在单元测试期间,库正在检查两个文件的内容是否相等。但是,使用当前操作系统的行分隔符创建一个文件,而控制文件具有Unix行分隔符。

如果查看文件jzy3d-jdt-core\src\test\resources\outputs\t1_1000.tsin_result.tsin,您会注意到它使用了Unix \n行分隔符。失败的shouldRunOnExampleData测试正在创建一个临时文件来对照该控制文件进行验证。在我的Windows计算机上,该临时文件是使用C:\Users\{UserName}\AppData\Local\Temp\jdt-4971059362436436156.smf创建的,如果打开,您会看到它使用Windows行分隔符\r\n。因此,两个文件不相等并且测试失败。

针对该库的开发人员的一种可行解决方案是在测试IOUtils.contentEqualsIgnoreEOL中使用shouldRunOnExampleData,因为在比较两个输入流时此方法不检查行尾。我为此问题创建了the issue 52submitted a pull request,现在已合并并关闭了它。

库用户,为您提供的解决方案是:

  • 使用Windows行分隔符更改jzy3d-jdt-core\src\test\resources\outputs中每个文件的行尾。如果使用Notepad ++打开文件,则只需转到“编辑> EOL转换> Windows格式”并保存文件,即可更改行尾。
  • 可以通过在类contentEqualsIgnoreEOL中使用SmokeTest来修复代码(然后,需要使用InputStreamReader包装参数)。
  • 跳过使用mvn clean install -DskipTests=true的测试。


  • 就我而言,我更改了测试代码以忽略行尾。构建的其余部分运行良好。

    关于java - 无法在Jzy3d程序的子模块上执行目标Maven Surefire插件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34766439/

    10-09 04:24