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

Я хочу добавить тестовый фреймворк в мой текущий проект Maven в IntelliJ.

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

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

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

1 ответ

Решение

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

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

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

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

специалист

Добавьте свой dependency элемент для AssertJ в dependencies элемент вашего ПОМ.

    <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>
Другие вопросы по тегам