JUnit 4测试套件


98

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

我看过的所有文档似乎都不适合我。而且,如果我使用Eclipse向导,它不会为我提供选择已创建的任何测试类的选项。


4
使用Eclipse 3.7 Indigo,测试套件向导现在支持JUnit 4
Fabian Steeg

Answers:


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

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

61

您可以像这样创建一个套件。例如,AllTest套件看起来像这样。

package my.package.tests;

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

public class AllTests {}

现在,您可以通过几种不同的方式运行它:

  1. 右键单击并在Eclipse中作为Junit测试运行
  2. 创建一个可运行的Java应用程序;主类 ='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

会为CMDLine添加更多的VoteUps :)
Gruber

9

我认为TestSuite不再受欢迎。这可能是4.x之前的样式,但据我所知目前还不是。

我只是注释我想要的测试,然后运行该类。所有带注释的测试都将运行。我可能使用过Ant,但是大多数时候我都使用IntelliJ为我运行它们。


11
我可能是错的,但是我认为当我们需要指定测试顺序时,TestSuite还是不错的,特别是在自动集成测试中,在这种情况下,应先测试较小的场景,然后再进行更复杂的场景。
伯蒂

@duffymo,我觉得您的评论很有趣,因为到目前为止,我是在4.x之前的思想体系中进行过有关将测试用例组织成测试套件的指导的
Vatsala 2012年

6
如果您有大量的测试,不同的功能区域/模块,“核心”测试与辅助/较慢/昂贵的非核心测试之间的区别(由于上述原因之一),则可以将测试结构化为TestSuite。
Thomas W

1
您可以@SuiteClass在多个类中使用批注,也可以将Suites嵌套在Suites中。在3.x中组织它们的思路仍然是完全有效的(应该使用)。您可以按照与以前完全相同的方式来构造所有内容。您只需要使用注释语法即可TestSuite.suite()。使用TestSuite注解确实没有任何好处,如果使用组织上等效的注解,则可以利用所有JUnit 4增强功能。
Thunderforge 2013年

3

以下是在Eclipse中创建JUnit套件的步骤:

  1. 在Eclipse“ Java”透视图的“ Package Explorer”视图中,在Eclipse Java项目内的软件包中选择您的单元测试。
  2. 右键单击任何选定的测试。
  3. 在弹出菜单中,选择“新建”,“其他...”。
  4. 打开“ Java”文件夹,然后打开“ JUnit”文件夹
  5. 选择“ JUnit Test Suite”,然后选择“ Next”按钮
  6. 选择按钮“完成”
  7. 结果:创建了“ AllTests.java”套件文件,并自动包含了测试
  8. 在Eclipse中选择“运行”按钮
  9. 结果:套件中的所有测试均运行
  10. 您现在可以使用ANT,Jenkins或其他构建配置连续集成工具来指向此套件文件。

版本信息:这是针对Eclipse Neon和JUnit 4的。您还可以在步骤6中选择“完成”之前选择JUnit 3。


您能否发布一个显示如何从ANT运行此测试套件的build.xml文件?
LiborStefek '19

1

在我的头顶上,创建一个TestSuite并调用addTests。如果您想让某人看一下,请尝试使用任何开源库(例如hibernate或apache中的内容),并在Tests套件的源的test目录下查看...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.