52

是否可以同时为多个包运行 JUnit 测试而无需手动创建测试套件。

例如,如果我有层次结构:

code.branchone
code.branchone.aaa
code.branchone.bbb
code.branchtwo
code.branchtwo.aaa
code.branchtwo.bbb

是否有可能:

  1. 在 code.branchone 和后代包中运行所有测试
  2. 在说 code.branchone.aaa 和 code.branchtwo.bbb 中运行所有测试

我看到手动创建测试套件的问题是,当新测试出现时,您可能会忘记添加它们。

4

7 回答 7

28

对的,这是可能的。至少对我来说最简单的方法是添加一个测试套件类。它看起来像这样:

package tests;

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

import tests.message.ATest;
import tests.validator.BTest;
import tests.validator.CTest;
import tests.validator.DTest;

@RunWith(Suite.class)
@SuiteClasses({ ATest.class, 
        BTest.class, 
        CTest.class, 
        DTest.class })
public class AllTests {

}

这将允许您测试您导入的任何类,无论它在哪个包中。要在 eclipse 中运行它,您只需右键单击 AllTests 类并将其作为 JUnit 测试运行。然后它将运行您在 中定义的所有测试@SuiteClasses

这也适用于链接源,我一直使用它。

于 2013-02-17T16:12:31.440 回答
24

另一种方式:

单击下图中由红色矩形表示的黑色三角形(在您的 Eclipse 中,不在此处 :)。)

在此处输入图像描述

然后打开运行配置,创建一个新配置,然后设置“运行所有测试...”,如下图所示。

在此处输入图像描述

于 2012-11-22T20:22:28.903 回答
14

可能不完全是最初的问题,但是您可以轻松地运行整个项目的所有测试,只需右键单击项目 -> 运行为 JUnitTest。不用担心带注释的类在哪里,它会被扫描。

如果应用于 test-src-folder 或带有子包的包,这将不起作用。其实挺可惜的-.-

于 2013-07-03T14:36:08.387 回答
3

我相信你可以稍微调整一下。创建一个 CLASSES_DIR 属性的集合并在 findClasses 方法中循环它。(junit4)

http://burtbeckwith.com/blog/?p=52

于 2009-01-05T14:51:08.287 回答
1

我相信您可以将所有测试包添加到一个目录中。如果您右键单击此目录,那么您应该会找到可用的“运行方式 -> JUnit 测试”选项。这将运行目录中包含的所有测试,并将捕获您添加的任何内容。任何新的测试都会与其他测试一起放在那里,无论您使用什么包名都没有关系。希望有帮助

于 2009-01-05T14:35:54.183 回答
1

当然,右键单击所需的包,然后选择 Run As... JUnit Test

于 2009-01-05T14:36:18.207 回答
1

在 Eclipse 中,在您的调试/运行配置中,您有以下选项:

  1. 运行单个测试
  2. 在选定的项目、包或源文件夹中运行所有测试

在这种情况下,我认为第二种选择是您的朋友。

于 2009-01-05T14:38:15.223 回答