类似于其他一些问题,我发现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 面板中。该应用程序运行,并且 Hello World 出现在IntelliJ的控制台上。
在App.java
文件中,添加此import
语句。
import static org.assertj.core.api.Assertions.* ;
在IDE编辑器中报告错误:
无法解析符号“断言”
有人建议Maven缓存损坏。因此,我退出IntelliJ,然后删除主文件夹中的.m2
文件夹。我在IntelliJ中重新打开我的项目,然后重新执行Maven clean
和install
。许多东西正在下载,所以我知道确实正在重新创建Maven缓存。
但是,仍然是我的编辑器Cannot resolve symbol 'Assertions'
中的错误。
不涉及Java模块,因为quickstart
原型尚未为此进行更新。
答案 0 :(得分:1)
<scope>test</scope>
在closed ticket # 520的AssertJ问题跟踪器中解决了该主题。
当Maven依赖项带有值为scope
的{{1}}元素时,这意味着您不能在特定于测试的源程序包/文件夹之外使用该库。
如果您尝试从示例项目的test
文件夹层次结构中的代码中调用AssertJ,则会看到该错误。如果从src/main/java/…
调用AssertJ,将会看到成功。
要在src/test/java…
文件夹层次结构中启用AssertJ,请删除POM依赖项中的src/main/java/…
元素。所以这个:
scope
…成为这个:
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.11.1</version>
<scope>test</scope>
</dependency>