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>