2009-01-05 44 views
47

是否可以在不手动创建测试套件的情况下同时运行多个包的JUnit测试。是否可以在Eclipse中运行多个包中的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

我用手动创建测试套件看到的问题是,当新测试过来,你可能会忘记添加它们。

+5

下面的答案都不起作用。我也有同样的问题。我可以运行“code.branchone.aaa”中的所有测试,但是如果我转到root“code.branchone”,它会显示“没有测试运行器'Junit 4'的测试结果”。请记住“code.branchone”没有任何源代码。 – Bdoserror 2012-01-05 01:06:46

+0

额外的混淆说明:我的项目(由其他人构建)已具有启动配置,该配置从层次结构中的较高目录(“代码”)开始工作。我复制了该配置并将其修改为我想要的子目录,但它仍然不起作用,并且该目录规范是它们之间的唯一区别。 – Bdoserror 2012-01-05 01:13:16

+0

嗯,也许问题是因为那个工程从主项目下的“子项目”(?)目录运行。例如在这个设置中,工作配置为“src/it/java”运行:项目(树的根)有1个子项,src/it/java 我想要的是src/it/java的子目录,源视图中我想运行的子目录的共同父项没有它自己的条目。例如: 项目(root)有src/it/java作为子项,而srt/it/java有2个子项sub1.subA&sub1.subB,我想从src/it/java/sub1运行所有测试 – Bdoserror 2012-01-05 01:25:45

回答

1

我相信您可以将所有测试包添加到单个目录中。如果你右键点击这个目录,你应该找到“run as - > JUnit test”选项。这将运行目录中包含的所有测试,并会捕获您添加的任何内容。任何新的测试都会与其他人一起放入其中,无论包含哪个名称都无关紧要。希望帮助

1

当然,你想要的包单击鼠标右键,并选择Run As ... JUnit测试

+3

这只适用于选择一个包装。 – SpaceTrucker 2015-07-08 08:39:49

1

在Eclipse中,您调试/运行,你有以下几种选择配置:

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

所有的测试,我认为第二个选项是你在这种情况下的朋友。

+14

,但它不会让你运行不同软件包的测试。 – 2010-09-27 06:22:13

3

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

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

+0

我还以不同于建议的方式使用它,使用注释。这个链接真的很有用! – oshai 2011-01-27 19:37:55

18

的另一种方式:(在Eclipse,不是在这里:))

点击黑色三角形用红色框下面的图片中表示

enter image description here

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

enter image description here

+4

只有在src(类路径的根目录)中才会运行项目的所有单元测试。如果在特定的软件包上选择它,它只会在选定的软件包本身内运行测试,但不会运行子软件包中的测试。 – Heri 2015-12-22 12:57:00

22

是的,这是可能的。对我而言,最简单的方法是添加一个测试套件类。它可以是这样的:

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中定义的所有测试。

这将与链接源一起工作,我一直都在使用它。

9

也许并不完全是原始问题,但只需右键单击项目 - > Run As JUnitTest,即可轻松运行整个项目的所有测试。不要担心注释类所在的位置,这将被扫描。

如果应用于test-src文件夹或带有子包的包,这不起作用。真是惭愧 - .-

相关问题