【问题标题】:How to get Junit 4 to ignore a Base Test Class?如何让 Junit 4 忽略基本测试类?
【发布时间】:2023-04-06 03:10:01
【问题描述】:

我有一个用于许多测试的基类,其中包含一些他们都需要的辅助方法。

它本身没有任何测试,但 JUnit(在 eclipse 中)正在调用它的测试运行器并抱怨没有方法可以测试。

我怎样才能让它忽略这个类?

我知道我可以添加一个dummyTest 方法来解决问题,但它也会出现在所有子类中。

建议?

【问题讨论】:

  • 它现在还在运行
  • 我刚刚知道,如果我们编写一个测试用例,那么测试用例及其强制项中应该至少有 1 个 @Test 方法。否则它会给我们初始化错误。是真的吗?

标签: junit junit4


【解决方案1】:

使用@Ignore注解。它也适用于类。 看到这个:

@Ignore public class IgnoreMe {
                        @Test public void test1() { ... }
                        @Test public void test2() { ... }
                }

此外,您可以注释类 包含带有@Ignore 的测试方法 并且所有包含的测试都不会 被执行。

来源:JUnit JavaDoc

【讨论】:

  • 我同意这应该可行,所以 +1。除了 netbeans 6.2 和 jUnit 4.5,@ignore 被列为仅对方法有效。
  • 查找它,Libary 被称为 4.5,但 jar 是 junit4-1.jar 很奇怪。接受了你的回答。谢谢。
  • 您能否指出有效的参考资料,上面写着@Ignore 仅对junit 4.5 中的方法有效?我好像没找到。
  • ...如果我想忽略除一个之外的所有方法的测试(而不是将@ignore 放在每个方法之上)?
【解决方案2】:

作为说明,我总是建议给出忽略的原因:

@Ignore("This test will prove bug #123 is fixed, once someone fixes it")

我希望在从 ant 运行测试时使用的 junit xml 报告格式化程序有一天会包含忽略的计数(和原因)以及通过、失败和错误。

【讨论】:

  • 多年过去了,但bug #123 还没有修复..)
【解决方案3】:

为 JUnit 4 创建 abstract 类应该足够了。如果它不起作用,请仔细检查您使用的 JUnit 版本。

这也传达了您的意图,即这只是测试的一部分。

它还可以防止 JUnit 将类中的测试计为“忽略”(因此忽略测试的最终计数将是您所期望的)。

或者,重命名类。大多数运行程序使用类名来确定哪些类是测试,哪些是帮助程序。在具有默认设置的 Maven 中,您只需确保基类不以 Test 开头或结尾,也不以 TestCase 结尾 (http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html)

【讨论】:

  • @Ignore 和abstract 的结合就是excellet!
  • 您不需要@Ignore。摘要就足够了(我认为最好)
  • 使用 JUnit 4,abstract 应该足够了。
【解决方案4】:

共有三个选项:

  1. 在 JUnit 4 或 5 中足以使基类 抽象。如果您使用@Igonre 属性,它会将其显示为被忽略的测试(并将其添加到测试总数中)。

  2. 您可以使用@Ignore 注释。此注释也适用于类。 @Ignore 测试注释用于忽略特定测试或测试组以跳过构建失败。

    @Ignore("Base class not yet ready") 
    class MyBaseClassTestCases {...}
    
  3. 您可以更改测试类的名称,使其在测试开始或结束时不包含单词 Test(区分大小写)名称/或结尾的单词TestCase

【讨论】:

  • 最相关的答案 IMO。
  • abstract 绝对是基础测试类的方法
【解决方案5】:

JUnit5

@Ignore在以后的版本中不会退出,如果你使用的是JUnit5,你可以使用JUnit Jupiter的@Disabled

import org.junit.jupiter.api.Disabled;

您甚至可以使用@Disabled 和评论@Disabled("some comment here")

注释类,将禁用类中的所有测试:

@Disabled
public class DemoTest { }

@Disabled("some comment here")
public class DemoTest { }

方法

@Disabled
public void whenCaseThenResult() { }

@Disabled("some comment here")
public void whenCaseThenResult() { }

【讨论】:

  • 你也做得很好。和往常一样!
【解决方案6】:

添加一个空测试有效。

@Test(expected = Test.None.class)
public void ATest() {}

注意,添加它而不添加 (expected = Test.None.class) 将添加“添加至少一个断言”声纳问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 2017-01-26
    • 2017-07-27
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多