2009-07-16 150 views
19

有没有办法在Eclipse中快速方便地从几个项目运行JUnit-Test?在Eclipse中快速运行多个项目的Junit测试

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

有没有办法做到这一点与Eclipse的几个项目的测试? 最好是通过Junit-Runner。如果有一些方法可以通过Ant-job快速完成(所以不要依赖于之前用ant完成的构建),那也不错。

回答

3

无法通过UI做。查看JUnit收集的最高级元素的扩展点是Project。我想你可以编写一个插件为工作集贡献额外的上下文项/快捷方式,使工作集在包浏览器中设置顶级项目,并将您想要测试的项目集中在该工作集下面。 这样做的问题是您在定义用于启用/禁用“run as”贡献的上下文规则时遇到问题,并且我不确定语义是否延伸到工作集。所以你必须编写一些包装来遍历包含的项目并收集他们的测试类型。这似乎确实是一个有趣的小问题。我今天放学后可能会玩一玩。

另一个(稍微少一点)hacky的方式是在所有目标项目上设置项目依赖关系的另一个项目,然后使用链接的资源将所有测试类型引入新项目(在此之前我已发布answer介绍如何链接不同项目的资源)。 当然,如果你这样做,你也需要管理测试项目的依赖关系。

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

如果您不喜欢使用插件或链接资源,那么您最好使用Ant。

3

您可以定义一个独立的项目,该项目依赖于其他项目,其中包含引用不同项目中单个测试或套件的套件。事情是这样的:

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

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

所有使用信息是在该网页上,但总结:

  1. 创建取决于你要测试的项目Eclipse项目。
  2. 编写一个简单的测试套件,包括一切:

    @RunWith(ClasspathSuite.class) 
    public class MySuite {} 
    
相关问题