Maven + AssertJ + IntelliJ = путаница с областью видимости?

Я хочу добавить тестовую среду в свой текущий проект maven в IntelliJ.

Я выбрал AsserJ, потому что этот стиль мне больше всего понравился. Я попробовал их руководство, но оно не помогло. (http://joel-costigliola.github.io/assertj/assertj-core-quick-start.html)

Моя проблема в том, что "тест" объема недостаточно хорошо объяснен. В этой области я даже не могу импортировать необходимые файлы AsserJ. Когда я пытаюсь «import static org.assertj.core.api.Assertions. *;», Импорт не распознается и говорит, что утверждения не могут быть разрешены.

Есть предложения, которые могут помочь?


person BluE    schedule 03.10.2016    source источник
comment
какова структура вашего кода? maven.apache.org/guides/introduction/ может помочь. Поскольку область тестирования будет работать только для классов, находящихся в каталоге файлов src / test / java   -  person Ash    schedule 03.10.2016
comment
Спасибо. Я уже находил эту страницу раньше, но это не решило моей путаницы. Ваш пост действительно помог мне, даже если он содержал ту же информацию, что и на этой странице! Стоит ли мне удалить этот вопрос сейчас, может быть, это было несколько глупо? Или разместите свой комментарий как ответ, который помог?   -  person BluE    schedule 03.10.2016
comment
Я отправлю сообщение в качестве ответа, чтобы попытаться завоевать всю эту славную репутацию   -  person Ash    schedule 03.10.2016


Ответы (2)


Какова структура вашего кода?

https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html может помочь.

"Тестовая" область импортирует библиотеки, которые доступны только для классов, находящихся в src / test / java.

person Ash    schedule 03.10.2016

принятый ответ правильный, но не содержит подробностей.

Maven

Добавьте элемент dependency для AssertJ в элемент dependencies вашего POM.

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

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

Если вы пытаетесь использовать утверждения AssertJ вне тестовых классов в своих обычных классах приложений, обратите внимание на элемент 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>

Требуется Java 8

AssertJ 3 требует Java 8 или новее.

Проверьте версию Java, используемую вашим компилятором. В Maven проверьте эту пару элементов:

    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
person Basil Bourque    schedule 27.01.2019