与其他一些问题类似,我发现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 面板,我执行了clean
和install
。
看起来不错。我验证了org.assertj:assertj-core:3.11.1
库出现在IntelliJ的 Project 面板中。应用程序运行,IntelliJ中的控制台上出现 Hello World。
在App.java
文件中,我添加了以下import
语句。
import static org.assertj.core.api.Assertions.* ;
IDE编辑器中报告的错误:
无法解析符号“Assert”
有些人建议使用损坏的Maven缓存。所以我退出了IntelliJ,并删除了主文件夹中的.m2
文件夹。我在IntelliJ中重新打开我的项目,并重新执行Maven clean
和install
。很多东西正在下载,所以我知道Maven缓存确实正在重新创建。
然而,仍然是我的编辑器中的错误,Cannot resolve symbol 'Assertions'
。
不涉及Java模块,因为quickstart
原型尚未更新。
2条答案
按热度按时间kjthegm61#
删除
<scope>test</scope>
这个主题在AssertJ问题跟踪器的closed ticket # 520中得到了解决。
当一个Maven依赖项携带一个值为
test
的scope
元素时,这意味着您不能在特定于测试的源包/文件夹之外使用该库。如果您试图从示例项目的
src/main/java/…
文件夹层次结构中的代码调用AssertJ,您将看到该错误。如果从src/test/java…
调用AssertJ,您将看到成功。要在
src/main/java/…
文件夹层次结构中启用AssertJ,请删除POM依赖项中的scope
元素。所以这个:变成了这样
仅供参考,assertj-core 的当前版本是
3.24.2
,截至2023-05。snvhrwxg2#
好吧,还有另一个疯狂的情况,将pom.xml中导入的库的版本更改为过时的版本在某种程度上帮助了...(删除
<scope>test</scope>
没有帮助)这一切都很好,当添加依赖这个版本的库
what import looks like (lovely) with 3.18.1 version imported
但由于某种原因,它无法看到带有此maven依赖项的assertj:
what import looks like (bad :c) with newest version imported