【问题标题】:What is the difference between running unit tests in Intellij and maven?在 Intellij 和 maven 中运行单元测试有什么区别?
【发布时间】:2021-03-05 21:30:19
【问题描述】:

我有一个包含多个模块的 Java Spring 引导服务。 当我在项目的根文件夹中执行mvn test 时,我看到大约有 400 个测试正在运行,并且所有测试都正常。

然后在 Intellij 中,我右键单击我的模块并选择 Run All Tests 菜单项。在这种情况下,70% 的测试开始失败。如果我通过单击测试前面的绿色三角形在 Intellij 中运行单个测试,它也会失败。 问题似乎是缺少一些配置或类似的东西。

如果我在 Intellij 中使用 clean install 命令创建 maven 运行配置,或者如果我在 Intellij 的菜单中运行 maven test 阶段,我会看到所有测试都正常。

命令行中的mvn test 与在 Intellij 中运行测试之间可能有什么区别,从而使 maven 的测试通过而 Intellij 的测试失败?

【问题讨论】:

    标签: maven intellij-idea


    【解决方案1】:

    命令行中的 mvn test 和 在 Intellij 中运行测试,使 maven 的测试通过并且 Intellij 的 失败了?

    长话短说: shell中的Maven是最好的判断者。如果它适用于纯 maven,请跟踪 IDE 和 shell 之间关于 Maven、JDK/JRE 和 ALL(编译、测试...)类路径配置的任何差异。它通常会有所帮助。

    --

    总的来说,我注意到 shell 和 IDE(IntelliJ 作为 Eclipse)maven 目标执行之间可能的行为差异的三个来源。

    这两个不是测试特定的:

    • Maven 或 JDK/JRE 差异
      事实上,Maven 版本/配置或 JDK/JRE 版本差异可能会产生不同的行为
    • IDE 特有的副作用。
      IDE 包装了 Maven 执行。该附加层可能会将事物设置为编译/测试类路径。如果 IDE 配置错误或 IDE 中与此相关的错误,IDE 中的行为可能与 shell 中的行为不同。

    这是特定于测试的:

    • Test Runners IDE 插件。
      为了运行测试类,IDE 依赖于它们自己的插件(例如 JUnit 4 或 JUnit 5 的 Eclipse 插件或 JUnit 4 或 JUnit5 的 IntelliJ 插件)。
      这些插件可能在某些特定配置中配置错误、错误或缺少某些依赖项。例如,为 JUnit 5 创建的 Eclipse 和 IntelliJ 插件在很长一段时间内都无法顺利运行,它可能需要我们在类路径中添加一些 JUnit 5 平台启动器库以允许我们的 IDE 运行单元测试。
      这些问题通常会导致启动测试出现早期错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-16
      • 2011-05-08
      • 2011-02-14
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 2011-07-18
      • 2021-11-01
      相关资源
      最近更新 更多