Maven + AssertJ + IntelliJ = 范围混淆?
Maven + AssertJ + IntelliJ = confusion with scope?
我想在我当前的 IntelliJ maven 项目中添加一个测试框架。
我选择 AsserJ,因为它的风格最适合我。我尝试了他们的教程,但未能提供足够的帮助。 (http://joel-costigliola.github.io/assertj/assertj-core-quick-start.html)
我的问题是范围 "test" 解释得不够好。在那个范围内,我什至无法导入必要的 AsserJ 文件。
当我尝试 "import static org.assertj.core.api.Assertions.*;" 时,无法识别导入,它说无法解析断言。
有什么建议可以帮助吗?
你的代码结构是什么?
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html 可能会有帮助。
"Test" 范围导入仅供 类 使用的库,这些库位于 src/test/java
下
正确,但缺少细节。
行家
在 POM 的 dependencies
元素中为 AssertJ 添加 dependency
元素。
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.11.1</version>
<scope>test</scope>
</dependency>
删除<scope>test</scope>
如果您尝试在常规应用程序 类 中使用测试 类 之外的 AssertJ 断言,请注意 scope
元素。该主题已在 AssertJ 问题跟踪器的 中得到解决。
当 Maven 依赖项带有值为 test
的 scope
元素时,这意味着您不能在测试特定源 package/folder 之外使用该库。
如果您尝试从示例项目的 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>
Java 需要 8 个
AssertJ 3 需要 Java8 或更高版本。
验证编译器使用的 Java 版本。在 Maven 中验证这对元素:
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
我想在我当前的 IntelliJ maven 项目中添加一个测试框架。
我选择 AsserJ,因为它的风格最适合我。我尝试了他们的教程,但未能提供足够的帮助。 (http://joel-costigliola.github.io/assertj/assertj-core-quick-start.html)
我的问题是范围 "test" 解释得不够好。在那个范围内,我什至无法导入必要的 AsserJ 文件。 当我尝试 "import static org.assertj.core.api.Assertions.*;" 时,无法识别导入,它说无法解析断言。
有什么建议可以帮助吗?
你的代码结构是什么?
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html 可能会有帮助。
"Test" 范围导入仅供 类 使用的库,这些库位于 src/test/java
下行家
在 POM 的 dependencies
元素中为 AssertJ 添加 dependency
元素。
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.11.1</version>
<scope>test</scope>
</dependency>
删除<scope>test</scope>
如果您尝试在常规应用程序 类 中使用测试 类 之外的 AssertJ 断言,请注意 scope
元素。该主题已在 AssertJ 问题跟踪器的
当 Maven 依赖项带有值为 test
的 scope
元素时,这意味着您不能在测试特定源 package/folder 之外使用该库。
如果您尝试从示例项目的 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>
Java 需要 8 个
AssertJ 3 需要 Java8 或更高版本。
验证编译器使用的 Java 版本。在 Maven 中验证这对元素:
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>