我想在IntelliJ中为我当前的maven项目添加一个测试框架。
我选择AsserJ,因为这种风格对我来说最好。我尝试了他们的教程,但未能提供足够的帮助。 (http://joel-costigliola.github.io/assertj/assertj-core-quick-start.html)
我的问题是范围"测试"没有得到足够的解释。使用该范围,我甚至无法导入必要的AsserJ文件。 当我尝试"导入静态org.assertj.core.api.Assertions。*;"时,导入无法识别,并且表示断言无法解析。
任何可能有帮助的建议?
答案 0 :(得分:2)
您的代码的结构是什么?
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html可能会有所帮助。
“测试”范围导入仅适用于src / test / java
下的类的库答案 1 :(得分:1)
accepted Answer是正确的,但缺少详细信息。
在您的POM的dependencies
元素中为AssertJ添加 <dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.11.1</version>
<scope>test</scope>
</dependency>
元素。
<scope>test</scope>
scope
如果您要在常规应用程序类中的测试类之外使用AssertJ断言,请注意scope
元素。 {@ 3}}在AssertJ问题跟踪器中解决了该主题。
当Maven依赖项带有值为test
的{{1}}元素时,这意味着您不能在特定于测试的源程序包/文件夹之外使用该库。
如果您尝试从示例项目的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>
AssertJ 3需要Java 8或更高版本。
验证编译器使用的Java版本。在Maven中验证这对元素:
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>