Java 忽略JUnit测试

Java 忽略JUnit测试,java,unit-testing,junit,junit4,Java,Unit Testing,Junit,Junit4,我有一个测试,我希望它不应该被启动 好的做法是什么:设置忽略内部测试@已弃用 我不想启动它,但会显示一条消息,通知我应该为将来启动它进行更改。我通常会使用@Ignore(“评论为什么忽略它”)。在我看来,这条评论对于其他开发人员来说非常重要,因为他们知道为什么测试被禁用,或者禁用多长时间(可能只是暂时的) 编辑: 默认情况下,只有类似于测试运行的信息:。。。跳过:1…用于忽略的测试。如何打印Ignore注释的值 一种解决方案是定制: 不幸的是,对于正常的JUnit测试,要使用自定义的RunLis

我有一个测试,我希望它不应该被启动 好的做法是什么:设置
忽略
内部测试<代码>@已弃用


我不想启动它,但会显示一条消息,通知我应该为将来启动它进行更改。

我通常会使用
@Ignore(“评论为什么忽略它”)
。在我看来,这条评论对于其他开发人员来说非常重要,因为他们知道为什么测试被禁用,或者禁用多长时间(可能只是暂时的)

编辑:

默认情况下,只有类似于
测试运行的信息:。。。跳过:1…
用于忽略的测试。如何打印
Ignore
注释的值

一种解决方案是定制:

不幸的是,对于正常的JUnit测试,要使用自定义的
RunListener
,需要有一个注册
PrintIgnoreRunListener
的自定义
Runner

public class MyJUnit4Runner extends BlockJUnit4ClassRunner {

    public MyJUnit4Runner(Class<?> clazz) throws InitializationError {
        super(clazz);
    }

    @Override
    public void run(RunNotifier notifier) {
        notifier.addListener(new PrintIgnoreRunListener());
        super.run(notifier);
    }

}
如果您使用的是maven和surefire插件,则不需要客户运行程序,因为您可以将surefire配置为使用自定义侦听器:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.10</version>
    <configuration>
        <properties>
            <property>
                <name>listener</name>
                <value>com.acme.PrintIgnoreRunListener</value>
            </property>
        </properties>
    </configuration>
</plugin>

org.apache.maven.plugins
maven surefire插件
2.10
听众
com.acme.PrintIgnoreRunListener

如果使用测试套件,可以在一个位置编辑所有测试用例。例如:

@RunWith(Suite.class)
@Suite.SuiteClasses({
WorkItemTOAssemblerTestOOC.class,
WorkItemTypeTOAssemblerTestOOC.class,
WorkRequestTOAssemblerTestOOC.class,
WorkRequestTypeTOAssemblerTestOOC.class,
WorkQueueTOAssemblerTestOOC.class
})
public class WorkFlowAssemblerTestSuite {

}

所以,我在@Test之前添加了@ignore(“”),在这种情况下,测试不会启动,但会显示一条注释,对吗?@lola:不幸的是,值没有打印出来(不知道为什么-即使这应该是一件容易的事情)。摘要中只有一个
跳过的:X
计数器。@萝拉:我更新了关于如何显示
@Ignore
注释值的答案
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.10</version>
    <configuration>
        <properties>
            <property>
                <name>listener</name>
                <value>com.acme.PrintIgnoreRunListener</value>
            </property>
        </properties>
    </configuration>
</plugin>
@RunWith(Suite.class)
@Suite.SuiteClasses({
WorkItemTOAssemblerTestOOC.class,
WorkItemTypeTOAssemblerTestOOC.class,
WorkRequestTOAssemblerTestOOC.class,
WorkRequestTypeTOAssemblerTestOOC.class,
WorkQueueTOAssemblerTestOOC.class
})
public class WorkFlowAssemblerTestSuite {

}