是否可以在 Eclipse 中从多个包运行 JUnit 测试?
Posted
技术标签:
【中文标题】是否可以在 Eclipse 中从多个包运行 JUnit 测试?【英文标题】:Is it possible to run JUnit tests from multiple packages in Eclipse? 【发布时间】:2010-09-29 14:49:59 【问题描述】:是否可以同时为多个包运行 JUnit 测试而无需手动创建测试套件。
例如,如果我有层次结构:
code.branchone code.branchone.aaa code.branchone.bbb code.branchtwo code.branchtwo.aaa code.branchtwo.bbb
是否可以:
-
在 code.branchone 和后代包中运行所有测试
在 code.branchone.aaa 和 code.branchtwo.bbb 中运行所有测试
我发现手动创建测试套件的问题是,当新测试出现时,您可能会忘记添加它们。
【问题讨论】:
以下答案均无效。我也有同样的问题。我可以在“code.branchone.aaa”中运行所有测试,但如果我转到根目录“code.branchone”,它会显示“没有使用测试运行器 'Junit 4' 找到测试”。请记住,“code.branchone”中没有任何来源。 额外的混乱说明:我的项目(由其他人构建)已经有一个启动配置,可以从层次结构中的更高目录(“代码”)工作。我复制了该配置并将其修改为我想要的子目录,它仍然无法正常工作,并且该目录规范是它们之间的唯一区别。 嗯,也许问题是因为工作的那个是从主项目下的“子项目”(?)目录运行的。例如在这个设置中,工作配置为“src/it/java”运行:项目(树的根)有 1 个孩子,src/it/java 我想要的是 src/it/java 的子目录,并且在源代码中查看我要运行的子目录的公共父级没有它自己的条目。例如:项目(根)有 src/it/java 作为孩子,srt/it/java 有 2 个孩子,sub1.subA 和 sub1.subB,我想从 src/it/java/sub1 运行所有测试跨度> 【参考方案1】:是的,这是可能的。至少对我来说最简单的方法是添加一个测试套件类。它可能看起来像这样:
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
中定义的所有测试。
这也适用于链接源,我一直都在使用它。
【讨论】:
我认为没有办法将包名称或通配符与@SuiteClasses
一起使用,是吗?我见过johanneslink.net/projects/cpsuite.jsp、burtbeckwith.com/blog/?p=52 和***.com/questions/1293880/…,但没有一个像我希望的那样好的解决方案。
这帮助我解决了 2 个测试用例相互干扰的问题(分别为绿色,但在按顺序执行时失败)。好把戏:-)
java.lang.Exception: 没有可运行的方法【参考方案2】:
另一种方式:
单击下图中由红色矩形表示的黑色三角形(在您的 Eclipse 中,不在此处:)。
然后打开运行配置,创建一个新配置,然后设置“运行所有测试...”,如下图所示。
【讨论】:
只有在 src(类路径的根目录)上,它才会运行项目的所有单元测试。如果在特定包上选择它,它只会运行所选包本身内的测试,而不是子包中的测试。【参考方案3】:也许不完全是最初的问题,但您可以轻松地运行整个项目的所有测试,只需右键单击项目 -> Run As JUnitTest。不用担心带注释的类在哪里,它会被扫描。
如果应用于 test-src-folder 或带有子包的包,这将不起作用。其实挺可惜的-.-
【讨论】:
【参考方案4】:我相信你可以稍微调整一下。创建一个 CLASSES_DIR 属性的集合并在 findClasses 方法中循环它。 (junit4)
http://burtbeckwith.com/blog/?p=52
【讨论】:
我也以与您建议的方式不同的方式使用它,使用注释。这个链接真的很有用!【参考方案5】:我相信您可以将所有测试包添加到一个目录中。如果您右键单击此目录,那么您应该会找到可用的“运行方式 -> JUnit 测试”选项。这将运行目录中包含的所有测试,并将捕获您添加的任何内容。任何新的测试都会与其余的测试一起放入其中,无论您使用什么包名称都无关紧要。希望有帮助
【讨论】:
【参考方案6】:好的,右键单击所需的包,然后选择 Run As... JUnit Test
【讨论】:
【参考方案7】:在 Eclipse 中,在您的调试/运行配置中,您有以下选项:
-
运行单个测试
在选定的项目、包或源文件夹中运行所有测试
在这种情况下,我认为第二个选项是你的朋友。
【讨论】:
但它不允许你从不同的包运行测试以上是关于是否可以在 Eclipse 中从多个包运行 JUnit 测试?的主要内容,如果未能解决你的问题,请参考以下文章
在 Eclipse 中从 jslint4java 中排除文件
mac上运行eclipse怎么也解析不了json,郁闷,总是提示缺少jar包,但下了一万个还是不行,求大神指点!