【问题标题】:Maven + AssertJ + IntelliJ = confusion with scope?Maven + AssertJ + IntelliJ = 与范围混淆?
【发布时间】:2016-10-03 12:16:50
【问题描述】:

我想在 IntelliJ 中为我当前的 maven 项目添加一个测试框架。

我选择 AsserJ,因为我觉得这种风格最好看。我尝试了他们的教程,但未能提供足够的帮助。 (http://joel-costigliola.github.io/assertj/assertj-core-quick-start.html)

我的问题是范围“测试”的解释不够好。在那个范围内,我什至无法导入必要的 AsserJ 文件。 当我尝试“import static org.assertj.core.api.Assertions.*;”时,无法识别导入,并说无法解析断言。

有什么可能有帮助的建议吗?

【问题讨论】:

  • 你的代码结构是什么? maven.apache.org/guides/introduction/… 可能会有所帮助。由于“测试”范围仅适用于 src/test/java 文件目录下的类
  • 谢谢。我以前找到过那个页面,但它并没有解决我的困惑。不过,您的帖子确实对我有所帮助,即使它包含与该页面上相同的信息!我现在应该删除这个问题,因为它可能有点愚蠢吗?或者发表您的评论作为有帮助的答案?
  • 我会发帖作为答案,试图获得所有光荣的声誉

标签: java maven intellij-idea assertj


【解决方案1】:

你的代码结构是什么?

https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html 可能会有所帮助。

“Test”作用域导入仅对 src/test/java 下的类可用的库

【讨论】:

    【解决方案2】:

    accepted Answer 是正确的,但缺少详细信息。

    Maven

    在 POM 的 dependencies 元素中为 AssertJ 添加 dependency 元素。

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

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

    如果您尝试在测试类之外的常规应用程序类中使用 AssertJ 断言,请注意 scope 元素。该主题已在 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>
    

    需要 Java 8

    AssertJ 3 需要 Java 8 或更高版本。

    验证编译器使用的 Java 版本。在 Maven 中验证这对元素:

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

    【讨论】:

      猜你喜欢
      • 2016-02-24
      • 1970-01-01
      • 2020-02-16
      • 2016-10-09
      • 2016-07-13
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      相关资源
      最近更新 更多