代码之家  ›  专栏  ›  技术社区  ›  LiorH

JUnit:如何避免测试utils类中的“无可运行方法”

  •  104
  • LiorH  · 技术社区  · 15 年前

    我已经从JUnit3.8切换到JUnit4.4。我使用ant运行测试,所有测试都成功运行,但测试实用程序类失败,出现“No runnable methods”错误。我使用的模式是在Test文件夹下包含所有名为*Test*的类。

    令人惊讶的是,在eclipse中运行这些测试时,它并没有抱怨这些类。

    我知道我可以在ant脚本的junit目标中排除这些特定类。但我不想在我添加的每个新实用程序类上更改构建文件。我也可以重命名这些类(但给类起好名字一直是我最薄弱的天赋:-)

    这个问题有什么好的解决办法吗?

    10 回复  |  直到 15 年前
        1
  •  143
  •   JoelPM    15 年前

    用@Ignore注释util类。这将导致JUnit不尝试将它们作为测试运行。

        2
  •  86
  •   gmoore    14 年前

    我的具体案例有以下场景。我们的测试

    public class VenueResourceContainerTest extends BaseTixContainerTest
    

    全部延伸

    BaseTixContainerTest
    

    JUnit试图运行BaseTixContainerTest。可怜的BaseTixContainerTest只是在尝试设置容器、设置客户端、订购比萨饼和放松。。。成年男子

    如前所述,您可以使用

    @Ignore
    

    但这导致JUnit将该测试报告为跳过(而不是完全忽略)。

    Tests run: 4, Failures: 0, Errors: 0, Skipped: 1
    

    这让我很恼火。

    Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
    
        3
  •  51
  •   Jon Skeet    15 年前

    假设您控制了用于查找测试类的模式,我建议将其更改为匹配 *Test 而不是 *Test* TestHelper 不会匹配,但是 FooTest

        4
  •  38
  •   froh42    12 年前

    为了防止JUnit实例化测试基类,只需

    public abstract class MyTestBaseClass { ... whatever... }
    

    (@Ignore将其报告为已忽略,我将其保留 暂时 忽略测试。)

        5
  •  19
  •   Raghu K Nair    8 年前
    1. 如果这是您的基本测试类,例如AbstractTest,并且您的所有测试都扩展了它,那么将该类定义为 摘要
    2. 如果它是Util类,那么最好从类中删除*Test,并将其重命名为MyTestUtil或Utils等。
        6
  •  15
  •   Sridhar Sarnobat    6 年前

    @Test

    import org.junit.Test 而不是 import org.testng.annotations.Test 例如如果执行后一种操作,将出现“no runnable methods”错误。

        7
  •  8
  •   mc1arke    5 年前

    蚂蚁现在也来了 skipNonTests

        8
  •  4
  •   akuhn    15 年前

    给这些类添加一个空的测试方法怎么样?

    public void avoidAnnoyingErrorMessageWhenRunningTestsInAnt() {
        assertTrue(true); // do nothing;
    }
    
        9
  •  4
  •   illuminatos    6 年前

    在测试类中,如果编写了import org.junit.jupiter.api.test;删除并编写import org.junit.Test;在这种情况下,它对我也起了作用。

        10
  •  0
  •   Rahul Vig    11 年前

    在运行最简单的一段代码(使用@Test、@Before等)时,我也遇到了类似的问题(“没有可运行的方法…”),但没有找到解决方案。我使用的是Junit4和EclipseSDK版本4.1.2。通过使用最新的Eclipse SDK 4.2.2解决了我的问题。我希望这能帮助那些正在为类似问题挣扎的人们。