为了简化我要问的问题:什么是测试失败以及如何纠正?
我是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 52和submitted a pull request,现在已合并并关闭了它。
库用户,为您提供的解决方案是:
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/