JUnit 4测试套件

104

我该如何使用JUnit 4创建测试套件?

我看到的所有文档对我来说似乎都不起作用。如果我使用Eclipse向导,它不会给我选择我已创建的任何测试类的选项。


4
从Eclipse 3.7 Indigo版本开始,测试套件向导现在支持JUnit 4。 - Fabian Steeg
请参考 https://stackoverflow.com/a/75285995/2914140 了解嵌套测试套件的相关信息。 - CoolMind
5个回答

155
import org.junit.runners.Suite;
import org.junit.runner.RunWith;

@RunWith(Suite.class)
@Suite.SuiteClasses({TestClass1.class, TestClass2.class})
public class TestSuite {
  //nothing
}

64

你可以这样创建一个测试套件。例如,AllTest 测试套件看起来可能像这样。

package my.package.tests;

@RunWith(Suite.class)
@SuiteClasses({
    testMyService.class,
    testMyBackend.class,
    ...
})

public class AllTests {}

现在你可以以几种不同的方式运行它:

  1. 右键单击并在Eclipse中作为Junit测试运行
  2. 创建可运行的Java应用程序;Main类 ='org.junit.runner.JUnitCore'和Args ='my.package.tests.AllTests'
  3. 从命令行运行:

    $ java -cp build/classes/:/usr/share/java/junit4.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore my.package.tests.AllTests
    

1
为CMDLine添加更多的VoteUps :) - Gruber

9

我认为TestSuite已经不再受欢迎了。在4.x之前可能是流行的方式,但据我所知现在已经不是了。

我只是注释我想要的测试,然后运行类。所有被注释的测试都会运行。我可能会使用Ant,但大部分时间我都让IntelliJ为我运行它们。


11
我可能错了,但我认为当我们需要指定测试顺序时,TestSuite仍然很有用,特别是在自动化集成测试中,其中测试更小的场景应该出现在更复杂的场景之前。 - Bertie
@duffymo,我觉得你的评论很有趣,因为迄今为止,我一直被教导将测试用例组织成测试套件的4.x版本之前的思路。 - Vatsala
6
如果你有大量的测试、不同的功能区/模块、区分“核心”和辅助/较慢/昂贵的非核心测试——出于任何这些原因——你会将测试结构化为一个测试套件。 - Thomas W
1
您可以在多个类中使用@SuiteClass注释,并且可以将套件嵌套在套件中。在3.x中组织它们的思路仍然完全有效(应该使用)。您可以像以前一样完全相同地结构化所有内容;您只需使用注释语法而不是TestSuite.suite()。使用注释与使用TestSuite相比没有真正的好处,如果您使用组织等效的注释,则可以利用所有JUnit 4增强功能。 - Thunderforge

4
以下是在eclipse中创建JUnit测试套件的步骤:
  1. 在eclipse“Java”视图的“Package Explorer”中,选择您要在其中运行单元测试的包和项目。
  2. 右键单击所选测试之一。
  3. 在弹出菜单中,选择“New, Other…”。
  4. 打开“Java”文件夹,然后打开“JUnit”文件夹。
  5. 选择“JUnit Test Suite”,然后选择“Next”按钮。
  6. 选择“Finish”按钮。
  7. 结果:创建了“AllTests.java”套件文件,并自动包含了测试。
  8. 在eclipse中选择“Run”按钮。
  9. 结果:所有套件中的测试都会运行。
  10. 现在您可以使用ANT、Jenkins或其他构建配置持续集成工具指向此套件文件。
版本信息:本文适用于eclipse Neon和JUnit 4。您也可以在第6步中选择JUnit 3。

你能否发布一个build.xml文件,展示如何通过ANT运行这个测试套件? - LiborStefek

1
从我的经验来看,创建一个TestSuite并调用addTests。如果您想查看一些源代码,请尝试任何开源库,如Hibernate或Apache中的某些内容,并在源代码的测试目录下查看测试套件...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接