按指定顺序运行JUnit4 Test类

时间:2013-10-04 09:00:13

标签: java unit-testing junit junit4 java-6

我已经编写了许多测试,不仅分为不同的类,而且根据我们正在测试的应用程序的哪个区域划分为单独的子包。所以,我的包结构看起来有点像这样:

my.package.tests
my.package.tests.four
my.package.tests.one
my.package.tests.three
my.package.tests.two

my.package.tests包中,我有一个父类,子包中的所有测试都是一到四个。现在,我想选择运行测试的顺序;不在类中(这似乎可以使用FixMethodOrder annotation),而是类或子包本身的顺序(那么首先是子包one中的那些,然后是two中的那些等等)。一些测试类使用Parameterized runner,以防万一有所不同。测试成功不需要选择顺序,它们是相互独立的;然而,对它们进行排序以反映通常使用程序的各个部分的顺序会有所帮助,因为它使分析更容易。

现在,理想情况下我想要一些配置文件告诉JUnit应该执行哪些测试顺序;不过我猜它不会那么容易。我在这里有哪些选项,最简单的选项是什么?我也更喜欢只需列出子包,而不是包中的各种类,甚至是类中的测试函数。

我正在使用Java 1.6.0_26(我在这里没有选择)和JUnit 4.11。

1 个答案:

答案 0 :(得分:11)

您可以使用测试套件执行此操作。 (你也可以“嵌套”这些)

@SuiteClasses({SuiteOne.class, SuiteTwo.class})
@RunWith(Suite.class)
public class TopLevelSuite {}

@SuiteClasses({Test1.class, Test2.class})
@RunWith(Suite.class)
public class SuiteOne {}


@SuiteClasses({Test4.class, Test3.class})
@RunWith(Suite.class)
public class SuiteTwo {}

......等等。使用“toplevelsuite”作为入口点,测试将按照您定义@SuiteClasses数组的顺序执行。

对于班级中的方法,您可以使用@FixMethodOrder指定他们执行的顺序(正如您在问题中已经提到的那样。