Spring Test No qualifying bean of type с использование JavaConfig

111
07 октября 2019, 01:00

недавно начал пользоваться JavaConfig в Spring. И сейчас решил попировать провести тесты, без использования xml.

Открыл доку, сделал все как надо, благо сильно не отличается. прописал аннотации необходимые и параметры

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AppInit.class, loader = AnnotationConfigContextLoader.class)

Далее делаю autowired необходимого Бина

@Autowired
private MyBean myBean;

запускаю тест и получаю ошибку No qualifying bean of type.

MyBean помечен как @Component и в конфете не описан.

Я уже прописывал статический класс в классе теста и в нем описывал Бин Таким образом

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AppInit.class, loader = AnnotationConfigContextLoader.class)
public class MyBeanTest {
@Configuration
static class ContextConfiguration {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}
@Autowired
private MyBean myBean;

Не помогло, и аннотацию @Qualifier ставил, прописывал уже сам Бин с именем определенным в AppInit.class, ничего не помогает.

Подскажите, пожалуйста, может я что-то не дописал?

Answer 1

Насколько я понимаю надо явно проимпортировать ContextConfiguration класс в аннотации у себя в тесте.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {AppInit.class, MyBeanTest.ContextConfiguration.class}, loader = 
AnnotationConfigContextLoader.class)
public class MyBeanTest {

Тут такой же принцип как с xml - нужно либо явно описать какие файлы должны быть в тестовом контексте или же сконфигурировать автоматический импорт.

Вообще я бы убрал тестовый конфиг в отдельный класс и переименовал его (т.к. может пересекаться с аннотацией)

Answer 2

Все оказалось еще проще, я забыл аннотацию @WebAppConfiguration. Так же прописал все файлы конфигов, и не пришло создавать тестовый файл конфига. Так же нужно убрать параметр loader у аннотации ContextConfiguration

Вот как в итоге выгладит заголовок

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
    AppInit.class,
    DBConfig.class,
    AppConfig.class})
@WebAppConfiguration
READ ALSO
Сериализация java

Сериализация java

Есть задача: Необходимо написать класс который сериализует/десериализует Java BeansВ случае наличия циклических ссылок выкинуть exception

128
Регулярные выражения содержащие ()

Регулярные выражения содержащие ()

Возник вопросНеобходимо разобрать строку

135
Vkontakte API ошибка: error: invalid_client, error_description; client_id is incorrect

Vkontakte API ошибка: error: invalid_client, error_description; client_id is incorrect

Делаю авторизацию в вк по этому видео

146
Как сделать квадратное поле в консоли?

Как сделать квадратное поле в консоли?

Мне нужно, чтобы в консоли вывелось квадратное поле из #, например, размером 5x5 Но у меня это не совсем выходит:

126