JUnit可选/必需测试
我有JUnit4.8.2和maven 3 我的应用程序中的一些测试应该在失败的情况下使构建失败,而其中一些不应该(只报告以下可选测试失败) 我如何使用junit实现它,如果我不能,那么testng也可以 例如,我有两个测试用例: 第一个不是很重要,可能因为连接超时、服务不可用等原因而失败。所以,若它失败了,我不想让整个构建失败,只想让用户知道它并写入控制台 第二个是非常重要的一个,如果它失败了,构建也应该失败 我知道@Ignore——这不是我想要的,因为我不想跳过任何测试 我知道@Category,所以如果您知道如何配置surefire插件,可以这样说:如果Category com.me.Required失败,那么构建应该失败;如果Category com.me.Optional失败,那么构建不应该失败JUnit可选/必需测试,junit,maven-3,testng,junit4,maven-surefire-plugin,Junit,Maven 3,Testng,Junit4,Maven Surefire Plugin,我有JUnit4.8.2和maven 3 我的应用程序中的一些测试应该在失败的情况下使构建失败,而其中一些不应该(只报告以下可选测试失败) 我如何使用junit实现它,如果我不能,那么testng也可以 例如,我有两个测试用例: 第一个不是很重要,可能因为连接超时、服务不可用等原因而失败。所以,若它失败了,我不想让整个构建失败,只想让用户知道它并写入控制台 第二个是非常重要的一个,如果它失败了,构建也应该失败 我知道@Ignore——这不是我想要的,因为我不想跳过任何测试 我知道@Categor
<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>
<groupId>foo.bar</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.12.4</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
</project>
及
运行mvn安装
现在将导致
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building test 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
.
.
.
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running SurefireTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.062 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
.
.
.
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running FailsafeIT
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.072 sec <<< FA
ILURE!
...
Results :
Failed tests: test(FailsafeIT)
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
.
.
.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.174s
[INFO] Finished at: Sat Sep 29 08:19:38 CEST 2012
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------
[INFO]正在扫描项目。。。
[信息]
[信息]------------------------------------------------------------------------
[信息]建筑测试0.0.1-快照
[信息]------------------------------------------------------------------------
[信息]
.
.
.
-------------------------------------------------------
T T S T S
-------------------------------------------------------
运行SurefireTest
测试运行:1,失败:0,错误:0,跳过:0,所用时间:0.062秒
结果:
测试运行:1,失败:0,错误:0,跳过:0
.
.
.
-------------------------------------------------------
T T S T S
-------------------------------------------------------
运行故障保护IT
测试运行:1,失败:1,错误:0,跳过:0,运行时间:0.072秒您的问题是什么?您是否编写过会失败或不会失败的测试用例?它们看起来怎么样?你的pom看起来怎么样?我已经更新了我的问题。请看一看是否允许将testFailureIgnore应用于非所有测试?我不这么认为so@Sergey克拉夫琴亚,我不认为这个选项是可行的。因此,我建议使用surefire插件运行不应该失败的测试,并使用failsafe插件运行允许失败的测试(并且testFailureIgnore设置为true
),这两个插件可以一起运行吗?如果是,请编辑您的答案,我会将其标记为已接受:)Thanks@SergeyKravchenya当然,可以同时运行两个插件。我添加了一个详细的示例。您应该仔细阅读插件文档(可能还有一些),以了解发生了什么。
import static org.junit.Assert.*;
import org.junit.Test;
public class FailsafeIT {
@Test
public void test() {
assertTrue(false);
}
}
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building test 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
.
.
.
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running SurefireTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.062 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
.
.
.
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running FailsafeIT
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.072 sec <<< FA
ILURE!
...
Results :
Failed tests: test(FailsafeIT)
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
.
.
.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.174s
[INFO] Finished at: Sat Sep 29 08:19:38 CEST 2012
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------