JUnit可选/必需测试

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

我有JUnit4.8.2和maven 3 我的应用程序中的一些测试应该在失败的情况下使构建失败,而其中一些不应该(只报告以下可选测试失败)

我如何使用junit实现它,如果我不能,那么testng也可以

例如,我有两个测试用例:

第一个不是很重要,可能因为连接超时、服务不可用等原因而失败。所以,若它失败了,我不想让整个构建失败,只想让用户知道它并写入控制台

第二个是非常重要的一个,如果它失败了,构建也应该失败

我知道@Ignore——这不是我想要的,因为我不想跳过任何测试

我知道@Category,所以如果您知道如何配置surefire插件,可以这样说:如果Category com.me.Required失败,那么构建应该失败;如果Category com.me.Optional失败,那么构建不应该失败

  • 您可以使用@Ignore,请参见

  • 您可以跳过特定包或中的测试

  • 您可以使用JUnit 4.8类别JUnit类别

  • 你可以用滑雪板

  • 我认为JUnit 4.8类别实际上就是您想要的。

    考虑在允许失败的测试中使用插件,并将标志设置为true

    对于故障保护插件,您必须将该插件添加到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/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] ------------------------------------------------------------------------