Java 如果junit测试失败,如何停止maven构建?
我已经建立了一个maven项目,它是创建一个JAR文件作为人工制品。现在我已经创建了一些JUnit测试,如果其中一个JUnit测试失败,我想停止maven构建。要做到这一点,需要采取哪些步骤?现在我得到一个JAR文件,尽管一个或多个JUnit测试失败 我已经在文件夹“src/main/resources”中创建了JUnit测试,下面是我的pom.xml的构建片段:Java 如果junit测试失败,如何停止maven构建?,java,maven,Java,Maven,我已经建立了一个maven项目,它是创建一个JAR文件作为人工制品。现在我已经创建了一些JUnit测试,如果其中一个JUnit测试失败,我想停止maven构建。要做到这一点,需要采取哪些步骤?现在我得到一个JAR文件,尽管一个或多个JUnit测试失败 我已经在文件夹“src/main/resources”中创建了JUnit测试,下面是我的pom.xml的构建片段: <plugins> <plugin> <groupI
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<optimize>true</optimize>
<fork>true</fork>
<source>${source.jdk}</source>
<target>${target.jdk}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>
jar-with-dependencies
</descriptorRef>
</descriptorRefs>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifestEntries>
<Source-JDK>${source.jdk}</Source-JDK>
<Target-JDK>${target.jdk}</Target-JDK>
<Project-Build-SourceEncoding>${project.build.sourceEncoding}</Project-Build-SourceEncoding>
<Maven-Build-Timestamp>${maven.build.timestamp}</Maven-Build-Timestamp>
</manifestEntries>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>${project.groupId}.${project.artifactId}.myMainFile</mainClass>
</manifest>
</archive>
<appendAssemblyId>false</appendAssemblyId>
<classifier>jar-with-dependencies</classifier>
</configuration>
<executions>
<execution>
<id>assembly-jar-Id</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven编译器插件
2.0.2
符合事实的
符合事实的
${source.jdk}
${target.jdk}
org.apache.maven.plugins
maven汇编插件
带有依赖项的jar
错误的
${source.jdk}
${target.jdk}
${project.build.sourceEncoding}
${maven.build.timestamp}
符合事实的
符合事实的
符合事实的
解放党/
${project.groupId}.${project.artifactId}.myMainFile
错误的
带有依赖项的jar
程序集jar Id
包裹
仅有一个的
当您创建maven
项目时,如果您使用mvn clean install
构建源代码,它将自动使构建失败,表示测试失败,不需要任何其他东西
继续了解更多信息。我知道您希望“快速失败”,但据我所知,答案是否定的。在谷歌上,我发现SureFire(运行junit测试用例的maven插件)出现了一个bug问题 允许“快速故障”或在第一次故障时停止运行 仍然处于开放状态 我已经在文件夹“src/main/resources”中创建了JUnit测试
那是错误的位置。将您的单元测试放入“src/test/java”中,Maven将处理其余部分。您可以将此添加到命令行:
mvn安装-Dmaven.test.failure.ignore=true
或者在pom.xml中使用以下插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.plugin.version}</version>
<configuration>
<!-- Build, even if tests fail -->
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
org.apache.maven.plugins
maven surefire插件
${surefire.plugin.version}
符合事实的
因此,即使您的任何测试失败,它也会忽略并继续您的构建过程而不会失败。作为补充信息-如果您没有遇到这种情况,maven很可能不会看到并运行您的测试类。看,这是错误的。使用
maven
您可以做OP
想要做的事情。我已经做了一年多了。这个问题是关于surefire
插件的,而不是关于maven
对不起,那是我的错误。我将junit测试放在src/test/java中,而不是放在src/main/resource中这是Op想要的吗?Op不想继续他的构建,如果测试失败,他想让他的构建失败。要在测试失败时停止构建,只需在命令提示符中使用mvn clean install,如果任何测试失败,这将导致构建失败。您应该回答Op问题,而不是其他问题。