как я могу указать модульный тест, когда я использую условный боб пружины - PullRequest
0 голосов
/ 13 мая 2018

Я создал весенний загрузочный проект, в котором я определил некоторые условные компоненты, которые используют аннотацию ConditionalOnProperty.Итак, в соответствии с моими настройками файла свойств, некоторые компоненты будут созданы, а некоторые нет (поскольку у меня есть некоторые бэк-энды для одной вещи, его можно установить в файле свойств, чтобы выбрать один в производственной ситуации).

Но я написал модульные тесты для всех bean-компонентов, поэтому модульные тесты не будут успешными, потому что в некоторых случаях некоторые bean-компоненты не будут созданы вообще, и я получу исключение UnsatisfiedDependencyException.

Есть ли какие-либоЧтобы проверить только созданный компонент, я попытался добавить аннотацию ConditionalOnProperty к методу модульного теста, но он не работает, поскольку речь идет о регистрации компонента.

Если нет хорошего решения, я разделюпроект в несколько библиотек для каждого бэк-энда, но это всего лишь небольшой проект.

1 Ответ

0 голосов
/ 14 мая 2018

ОК, наконец-то я нашел способ.

В моем тестовом примере я использую аннотацию Autowired, во-первых, я должен добавить параметр

<code> required = false 
для Autowired, поэтому, когда бин не создается, потому чтоConditionOnProperty не выполнено, оно не сгенерирует исключение NoSuchBeanException, и поле будет содержать значение NULL.

Во-вторых, мне следует использовать класс Assume JUnit, чтобы проверить, выполняется ли условие, если условие не выполнено, случай будетигнорируется.

Поскольку моим условием является значение в файле свойств, я его читаю и использую для подачи метода acceptTrue.

Может быть, есть и другой лучший способ, но он работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...