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

2

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

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

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

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

  • 3
    какова структура вашего кода? maven.apache.org/guides/introduction/… может помочь. Поскольку область «test» будет работать только для классов, которые находятся в каталоге файлов src / test / java
  • 0
    Спасибо. Я нашел эту страницу раньше, но это не решило мою путаницу. Ваше сообщение помогло мне, даже если оно содержало ту же информацию, что и на этой странице! Должен ли я удалить этот вопрос сейчас, так как это может быть несколько глупо? Или опубликовать свой комментарий как ответ, который помог?
Показать ещё 1 комментарий
Теги:
maven
intellij-idea
assertj

2 ответа

2
Лучший ответ

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

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

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

  • 0
    Спасибо. Я поставил тесты на неверный путь.
0

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

специалист

Добавьте свой элемент 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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню