8

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

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

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

现在,理想情况下,我想要一些配置文件来告诉 JUnit 应该以哪个顺序执行测试;然而,我猜这不会那么容易。我在这里有哪些选择,最简单的选择是什么?我还希望只列出子包,而不是包中的各种类,甚至是类中的测试函数。

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

4

1 回答 1

17

您可以使用测试套件来做到这一点。(你也可以“嵌套”这些)

@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(正如您在问题中已经提到的那样。

于 2013-10-04T09:25:40.630 回答