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

Testing 在IntelliJ IDEA中从多个模块一起运行单元测试,testing,intellij-idea,Testing,Intellij Idea,如何一次运行两个或多个IDEA模块的所有测试 我使用了许多模块,经常运行所有单元测试非常重要,当我选择多个文件夹运行时,上下文菜单上不再有“运行”选项。您必须创建“运行配置”: 转到顶部“Make”按钮右侧的下拉列表,然后单击它 选择“编辑配置” 现在单击“+”按钮添加新的运行配置并选择JUnit 然后,在配置“运行配置”时,您会发现一个“测试种类”下拉列表,选择“目录中的所有类” 选择要用作根目录的目录,可以选择项目的顶级目录或模块的任何目录 选择IntelliJ模块,从中获取类路径(如果它有

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

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

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

  • 转到顶部“Make”按钮右侧的下拉列表,然后单击它
  • 选择“编辑配置”
  • 现在单击“+”按钮添加新的运行配置并选择JUnit
  • 然后,在配置“运行配置”时,您会发现一个“测试种类”下拉列表,选择“目录中的所有类”
  • 选择要用作根目录的目录,可以选择项目的顶级目录或模块的任何目录
  • 选择IntelliJ模块,从中获取类路径(如果它有类路径,则可以是顶级项目)

  • 最佳方式:(3年后编辑)

    甚至还有更好的方法来实现这一点

  • 选择菜单“运行”→ “编辑配置…”。单击左上角的绿色加号并选择JUnit

  • 选择“Test kind”到“Pattern”并输入与您看到的完全相同的正则表达式:
    ^(?。*it$).*$
    (它以插入符号开始^,以美元结束)。这个regexp表示:所有未以其名称结束的测试

  • 选择“搜索测试”至“在整个项目中”。工作目录应设置为顶层模块工作目录(默认设置)

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

  • 您可以尝试使用这个regexp来满足您的需要

    原始答案:

    这是可行的,尽管不舒服

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

  • 这样,您可以按顺序运行配置,并且每个配置都会获得一个新选项卡。不过,总比什么都没有好。

    对我来说,两种解决方案都不起作用或不起作用

    对我来说,我有3个模块。我的模块依赖项如下所示

    演示文稿->领域->数据

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

    我的设置如下所示:


    另一个不太明显的情况是,在多个项目上需要代码覆盖率。最简单的解决方案是选择多个项目并同时在其中运行所有单元测试。事实证明,如果类路径发生更改并且IntelliJ在每个运行配置中只有一个类路径条目,那么单元测试可能会失败。在这种情况下,按顺序在项目上运行单元测试实际上就足够了。这是因为在每次运行结束时,IntelliJ(2017.2.5社区版)都会询问收集的覆盖率是否应替换或添加到以前收集的覆盖率统计数据中。

    对于一个具有多个模块的项目,这对我来说很有效

    创建新的JUnit运行/调试配置。 测试种类:“包装中的所有” 搜索测试:“整个项目”


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

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

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

    选择所有模块

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

    获取新的运行配置


    谢谢你的提示,尽管这并不能解决问题。最好的办法是选择几个目录,而不是只选择一个。特别的解决方案是使用模式,但仍然可以只对包进行模式化,而不是对目录进行模式化…在“测试种类”中选择“包中的所有”,然后选中复选框“在整个项目中”。这将在所有模块中运行测试。我希望每个模块都使用自己的模块目录作为工作目录运行-这似乎是不可能的-似乎整个过程都使用单个模块目录。@MartinOdhelius这是最干净的解决方案,所以farThanks!这是迄今为止最干净的方式。想知道3年后是否有更好的方法来实现这一点:)谢谢!你节省了我的时间,这仍然是迄今为止我能找到的最聪明的方法,可以一次性解决多覆盖率报告生成和统一案例运行程序问题。我刚刚用一个更好的解决方案@coderspinoza编辑了我的anser。更新的版本不太好,如果您的测试用例在其运行时使用特定于模块的资源,我仍然更喜欢原始解决方案。如何使此配置尊重我的Gradle依赖关系?现在,它在缺少番石榴的课程时失败了。当运行单个模块的测试时,它运行良好。在第一步中选择多个模块就足够了。在我看来,这应该是公认的答案。我唯一的保留是使用“最简单”一词。不幸的是,使用Intellij运行配置并不容易。使用配置执行简单任务的方法有很多,如果可行的话,通常只有一种。因此,您的任务通常是迭代所有不同的选项,以搜索有效的选项。一点也不容易