从多个模块一起在IntelliJ IDEA中运行单元测试


85

如何一次从两个或多个IDEA模块运行所有测试?

我使用了许多模块,因此经常运行所有单元测试非常重要,并且当我选择运行多个文件夹时,上下文菜单上不再有“运行”选项。

Answers:


113

最佳方法:(3年后编辑)

甚至有更好的方法可以实现此目的。

  1. 选择菜单“运行”→“编辑配置...”。单击左上角的绿色加号,然后选择JUnit。

  2. 选择“测试种类”为“模式”,然后完全按照您所见的方式输入此正则表达式:(^(?!.*IT$).*$它以脱字符号开始,^以美元结束$)。该正则表达式表示:所有未以IT名义完成的测试

  3. 选择“搜索测试”到“整个项目”。工作目录应设置为顶层模块工作目录(默认情况下应设置)。

  4. 输入测试的名称,例如“所有单元测试”。我也更喜欢标记“共享”选项,这样此配置以后就不会消失。单击应用,然后单击确定。

您可以尝试使用此正则表达式来满足您的需求。

原始答案:

尽管不舒服,但它是可行的。

  1. 选择第一个模块,右键单击test/java目录并“运行所有测试”。它创建测试配置。
  2. 选择“编辑配置”,然后在新创建的配置上选中“共享”,以便将其保存。
  3. 选择第二个模块,“运行所有测试”,然后在此配置上选中“共享”。
  4. 在“启动前”部分中,单击“ +”并选择“运行其他配置”,然后选择第一个模块的配置。

这样,您可以按顺序运行配置,并且每个配置都有一个新选项卡。尽管如此,总比没有好。


谢谢!到目前为止,最干净的方法。想知道三年后是否有更好的方法来实现这一目标:)
CoderSpinoza

谢谢!你救了我的时间,这是目前为止仍然是最聪明的方式,我可以找到解决双方多次覆盖报表生成和统一的情况下,跑步者的问题在一杆
2016年

我刚刚用更好的解决方案编辑了分析服务中心@CoderSpinoza
TomaszKalkosiński16年

10
如果您的测试用例在运行时使用模块特定的资源,则更新的版本不是很好-我仍然更喜欢原始解决方案。
2016年

如何获得此配置以尊重我的Gradle依赖关系?现在,它在缺少番石榴的课程上失败了。运行单个模块的测试时,它可以正常工作。
乔恩

22

您必须创建“运行配置”:

  1. 转到顶部的下拉列表,位于“制作”按钮的右侧,然后单击它
  2. 选择“编辑配置”
  3. 现在单击“ +”按钮以添加新的运行配置并选择JUnit
  4. 然后,在配置“运行配置”时,您会找到“测试类型”下拉列表,选择“目录中的所有类”
  5. 选择要用作根目录的目录,可以为项目选择顶层目录,也可以为模块选择任何目录。
  6. 选择从中获取类路径的IntelliJ模块(如果具有类路径,它可以是顶层项目)

感谢您的提示,尽管它不能解决问题。完美的方法是选择多个Dirs,而不仅仅是一个。最终的解决方案是使用模式,但仍然只能模式化包装,而不是目录...
Wojtek Erbetowski

15
在“测试类型”中,选择“全部打包”,然后选中“在整个项目中”复选框。这将在所有模块中运行测试。
Martin Odhelius

5
我希望每个模块都以其自己的模块目录作为工作目录运行-似乎不可能为整个事情使用单个模块目录。
bacar 2014年

@MartinOdhelius是迄今为止最干净的解决方案
Hemil

10

选择所有模块,右键单击它们,然后选择运行所有测试。这将创建一个名为“ Whole Project”的配置,您可以随时再次运行它。

我发现这比接受的答案要好,因为这可以为每个模块分别运行单元测试。如果您的测试用例在运行时使用特定于模块的资源,那么公认答案的最佳方法将行不通。

选择所有模块

选择所有模块

右键单击并选择运行所有测试

右键单击并选择运行所有测试

获取新的运行配置

获取新的运行配置


在第一步中选择多个模块就足够了。
user7610

2
我认为这应该是公认的答案。我唯一的保留意见是使用“最简单”一词。不幸的是,使用Intellij进行运行配置并非易事。有许多方法可以通过配置完成简单的任务,通常只有一种(如果有的话)。因此,您的任务通常是遍历所有不同的选项以寻找可行的选项。一点都不容易。
大卫·萨克斯坦

这将运行项目(整个项目)中的所有测试,即使我选择的只是模块的一小部分。这不是我想要的。在我的情况下,我要运行测试的所有模块共享一个通用程序包,因此我可以编辑生成的“整个项目”配置并添加该程序包,该程序包仅针对模块的子集运行测试。
阿尔伯特·维拉·卡尔沃

5

对我来说,这两种解决方案均无效或无效。

对我来说,我有3个模块。我的模块依赖关系看起来像这样

演示->->数据

我只是想一起执行所有测试。所以我想出了“跨模块依赖”方法

我的设置如下所示:

在此处输入图片说明


2

对于一个具有多个模块的项目,这为我工作。

创建一个新的JUnit运行/调试配置。测试类型:“全部打包”搜索测试:“整个项目”

您还必须指定一个工作目录。


那也是我最终要做的。
miva2

1

另一个不太明显的情况是,多个项目需要代码覆盖。天真的解决方案是选择多个项目,然后一次运行所有单元测试。事实证明,如果类路径更改并且IntelliJ每个运行配置中只有一个类路径条目,则单元测试可能会失败。在这种情况下,按顺序在项目上运行单元测试实际上就足够了。这是因为在每次运行结束时,IntelliJ(2017.2.5 Community Edition)都会询问收集的覆盖范围是否应替换或应该添加到以前收集的覆盖范围统计信息中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.