在Eclipse中快速方便地从多个项目中运行Junit-Tests

有没有办法在Eclipse中快速地从几个项目中运行JUnit-Tests?

JUnit-Runner允许您定义包含所有包含的测试的包或文件夹。

有没有办法用Eclipse中的几个项目进行测试? 最好是通过Junit-Runner。 如果有一些方法可以通过Ant作业快速完成(因此不依赖于之前使用ant的完整构建),那也很好。

你不能通过UI来做到这一点。 查看扩展点,JUnit将收集的最高级元素是项目。 我想你可以编写一个插件来为工作集提供额外的上下文项/快捷方式,make work设置包浏览器中的顶级项,并将要在一个工作集下面一起测试的项目分组。 执行此操作的问题是您无法定义启用/禁用“运行方式”贡献的上下文规则,并且我不确定语义是否扩展到工作集。 因此,您必须编写某种包装器来迭代包含的项目并收集它们的测试类型。 这似乎是一个有趣的小问题。 我今天放学后可能会玩它。

另一种(略少)hacky方式是在所有目标项目上设置另一个项目依赖项目,然后使用链接资源将所有测试类型引入新项目(之前我已经发布了一个答案 ,描述了如何链接跨项目的来源)。 当然,如果您这样做,您还需要管理测试项目的依赖项。

如果为每个项目创建一个TestSuite,并为另一个引用所有项目套件的超级TestSuite,则必须检查是否包含每个测试,这很容易出错。

如果你不喜欢使用插件或链接资源,你可能最好使用Ant。

实际上,从Eclipse中跨多个项目执行JUnit测试非常容易。 看看Classpath Suite 。 这不是标准的JUnit跑步者,但你没有提到这个要求来自哪里,所以我不确定这是否会影响你。

所有使用信息都在该页面上,但总结如下:

  1. 根据要测试的所有项目创建Eclipse项目。
  2. 写一个简单的测试套件,包括一切:

    @RunWith(ClasspathSuite.class) public class MySuite {} 

您可以定义一个独立的项目,该项目依赖于其他项目,其中包含引用来自不同项目的各个测试或套件的套件。 像这样的东西:

 @RunWith(Suite.class) @Suite.SuiteClasses( { FirstProjectSuite.class, SecondProjectSuite.class} ) public class AllSuites { } 

我不确定你不能从UI做到这一点,但是从ant开始,即使你没有使用ant构建插件也是可能的。 不过这种方法并不是那么简单,但一旦建立起来,事情就很酷了; o)

点击此处查看更多信息:

http://www.eclipse.org/articles/article.php?file=Article-PDEJUnitAntAutomation/index.html