Не удается разрешить символ «Утверждения» <- Сообщение об ошибке при попытке использовать AssertJ в IntelliJ - PullRequest
0 голосов
/ 28 января 2019

Подобно некоторым другим Вопросам, я нахожу, что IntelliJ таинственно отказывается распознавать библиотеку AssertJ.Я снова спрашиваю, как (а) я попробовал различные предложения, и (б) у меня есть очень простой пример, который каждый может попробовать сами.

В предварительной версии IntelliJ 2018 и IntelliJ 2019 я создаю новыйпроект с использованием архетипа Maven maven-archetype-quickstart версия 1.4.

AssertJ 3 требует 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>

Использование Maven панель в IntelliJ, я выполнил 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 для этого еще не обновлен.

1 Ответ

0 голосов
/ 28 января 2019

Удалить <scope>test</scope>

Эта тема была рассмотрена в закрытом билете # 520 в системе отслеживания проблем AssertJ.

Когда зависимость Maven содержит scopeэлемент со значением test, это означает, что вы не можете использовать эту библиотеку вне вашего исходного пакета / папки для теста.

Если вы пытаетесь вызвать AssertJ из кода в иерархии папок src/main/java/… вашего примера проекта, вы увидите эту ошибку.Если вы позвоните AssertJ из src/test/java…, вы увидите успех.

Чтобы включить AssertJ в иерархии папок src/main/java/…, удалите элемент scope в зависимости POM.Так вот:

    <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>
...