【问题标题】:Subclass TestCase and use JUnit 4 annotations子类化 TestCase 并使用 JUnit 4 注释
【发布时间】:2013-06-28 09:26:58
【问题描述】:

为了测试我定义的 Map 类,我从 Google Collections 库中扩展了 MapInterfaceTest

问题是我想在这个类中添加更多测试,并且能够在开发时使用@Ignore 注解忽略特定的长时间运行或损坏的测试,但是因为 MapInterfaceTest 扩展了 TestCase,所以测试在 Junit3 兼容模式下运行,并且注释被忽略。

有没有办法让 Junit 尊重扩展 TestCase 的测试类上的注释?

【问题讨论】:

    标签: java junit


    【解决方案1】:

    在你的测试课上试试这个注解。

    @RunWith(JUnit4.class)
    public class MyTestCase extends MapInterfaceTest {...}
    

    这应该强制 Junit 在执行中使用 Junit4 而不是 Junit3。也许这适用于您的测试用例。

    但是,JUnit4 不会采用旧式的“test*”测试方法,因为它依赖于 @Test 注释。如果您要扩展的类没有这些注解并且您不能直接添加它们,您可以覆盖测试以便在子类中添加注解,如下所示:

    @Test
    @Override
    public void testFoo()
    {
        super.testFoo();
    }
    

    【讨论】:

    • 你是对的,这正如你所说的那样,注释得到尊重,但超类中的旧式 test* 方法被忽略了。我想我可以覆盖@Override @Test public void testFoo{super.testFoo();} 之类的所有方法,这样就可以解决问题。
    • 好的,太好了!告诉我这是否有效。那会很有趣。
    • 它确实有效,但是我认为它工作量太大,只是将我的新测试方法拆分为不同的类。我对您的答案进行了编辑,接受它或进行类似的编辑,我会接受这个答案:)
    猜你喜欢
    • 2010-11-27
    • 2023-03-13
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多