Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Eclipse中方便快捷地从多个项目运行Junit测试_Java_Eclipse_Ant_Junit_Eclipse 3.5 - Fatal编程技术网

Java 在Eclipse中方便快捷地从多个项目运行Junit测试

Java 在Eclipse中方便快捷地从多个项目运行Junit测试,java,eclipse,ant,junit,eclipse-3.5,Java,Eclipse,Ant,Junit,Eclipse 3.5,在Eclipse中有没有一种方法可以方便快捷地从多个项目运行JUnit测试 JUnit Runner允许您定义一个包或文件夹,在其中执行所有包含的测试 有没有一种方法可以通过Eclipse中几个项目的测试来做到这一点? 最好是通过Junit Runner。如果有某种方法可以通过Ant作业快速完成(因此之前不依赖于Ant的完整构建),那也很好。您可以定义一个独立的项目,该项目依赖于其他项目,其中包含一个引用不同项目中的单个测试或套件的套件。大概是这样的: @RunWith(Suite.class)

在Eclipse中有没有一种方法可以方便快捷地从多个项目运行JUnit测试

JUnit Runner允许您定义一个包或文件夹,在其中执行所有包含的测试

有没有一种方法可以通过Eclipse中几个项目的测试来做到这一点?
最好是通过Junit Runner。如果有某种方法可以通过Ant作业快速完成(因此之前不依赖于Ant的完整构建),那也很好。

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

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

我不确定你们不能从UI上完成,但从ant上,即使你们并没有使用ant构建插件,这也是可能的。尽管如此,这种方法并不琐碎,但一旦建立起来,事情就变得很酷了;o)

查看此处了解更多信息:


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

另一种(稍微少一点)不太老练的方法是设置另一个项目,该项目依赖于所有目标项目,然后使用链接的资源将所有测试类型引入到新项目中(我以前发布过一篇文章,描述了如何跨项目链接源)。 当然,如果您这样做,您还需要管理测试项目的依赖关系

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


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

实际上,在Eclipse中跨多个项目执行JUnit测试非常容易。看一看。它不适用于标准JUnit runner,但您没有提到该需求来自何处,因此我不确定这是否会影响您

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

  • 根据要测试的所有项目创建Eclipse项目
  • 编写一个简单的测试套件,包括所有内容:

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