【问题标题】:Cannot resolve symbol 'Assertions' <-- Error message when trying to use AssertJ in IntelliJ无法解析符号“断言”<--尝试在 IntelliJ 中使用 AssertJ 时出现错误消息
【发布时间】:2019-01-27 22:27:00
【问题描述】:

与其他一些问题类似,我发现 IntelliJ 神秘地拒绝识别 AssertJ 库。我再次询问,因为 (a) 我已经尝试了各种建议,并且 (b) 我有一个非常简单的示例,任何人都可以自己尝试。

在 IntelliJ 2018 和 IntelliJ 2019 预发布版中,我使用 Maven 原型 maven-archetype-quickstart 1.4 版创建了一个新项目。

AssertJ 3 requires Java 8。所以我将 POM 中的这两行 1.7 更改为 11

    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>

我将这个添加到 POM:

    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.11.1</version>
        <scope>test</scope>
    </dependency>

使用 IntelliJ 中的 Maven 面板,我执行了 cleaninstall

看起来不错。我验证 org.assertj:assertj-core:3.11.1 库出现在 IntelliJ 的 Project 面板中。应用程序运行,Hello World 出现在 IntelliJ 的控制台上。

App.java 文件中,我添加了这个import 语句。

import static org.assertj.core.api.Assertions.* ; 

IDE 编辑器报错:

无法解析符号“断言”

有些人认为 Maven 缓存已损坏。所以我退出了 IntelliJ,并删除了主文件夹中的 .m2 文件夹。我在 IntelliJ 中重新打开我的项目,并重新执行 Maven cleaninstall。许多东西正在下载,所以我知道 Maven 缓存确实正在重新创建。

然而,我的编辑器中仍然存在错误,Cannot resolve symbol 'Assertions'

不涉及 Java 模块,因为尚未为此更新 quickstart 原型。

【问题讨论】:

  • 如果您有一个模块化项目,请不要忘记将requires org.assertj.core; 添加到您的module-info 文件中。
  • @JornVernee 谢谢,但没有 Java 模块。 Maven quickstart 原型尚未针对模块进行更新。我在问题中澄清了。刚刚发布后,我找到了解决方案:依赖项上的test 范围仅限制对测试类的访问。删除 test 范围会打开 AssertJ 以在您的主应用程序中使用。

标签: java maven intellij-idea assertj


【解决方案1】:

删除&lt;scope&gt;test&lt;/scope&gt;

该主题已在 AssertJ 问题跟踪器上的 closed ticket # 520 中得到解决。

当 Maven 依赖项带有一个值为 testscope 元素时,这意味着您不能在特定于测试的源包/文件夹之外使用该库。

如果您尝试从示例项目的 src/main/java/… 文件夹层次结构中的代码调用 AssertJ,您将看到该错误。如果你从src/test/java… 调用 AssertJ,你会看到成功。

要在 src/main/java/… 文件夹层次结构中启用 AssertJ,请删除 POM 依赖项中的 scope 元素。所以这个:

    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.11.1</version>
        <scope>test</scope>
    </dependency>

…变成这样:

    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.11.1</version>
    </dependency>

【讨论】:

  • 你是个天才!谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
  • 2013-02-14
  • 2014-06-14
相关资源
最近更新 更多