Autowired не работает в junit spring mvc 5

Я пытался протестировать свое веб-приложение, но аннотация @autowired не работает, а для поля установлено значение null. Пожалуйста помоги.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { AppConfig.class, WebSecurityConfig.class, MvcWebApplicationInitializer.class},
loader = AnnotationConfigContextLoader.class)
@PersistenceContext
@Transactional(transactionManager = "hibernateTransactionManager")
@TestExecutionListeners({})
public class NewsDaoTest {

    @Autowired
    private NewsService newsService;

    @Test
    @Rollback(true)
    public void testAddArticle() {

        Article article = new Article();

        article.setLink("test");
        article.setTitle("Title");

        assertTrue(newsService.create(article));
    }

}

Удалите @TestExecutionListeners({}).

M. Deinum 30.10.2018 13:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы объявляете @TestExecutionListeners({)} в тестовом классе, который не расширяет какой-либо другой тестовый класс, аннотированный @TestExecutionListeners, вы фактически говорите Spring загружать только ваши классы Listener, когда вы действительно хотите использовать комбинацию со слушателями по умолчанию из Spring (например, DependencyInjectionTestExecutionListener который добавляет поддержку внедрения зависимостей bean-компонентов из ApplicationContext).

поэтому удаление должно загружать все необходимые зависимости автоматически.

RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { AppConfig.class, WebSecurityConfig.class, MvcWebApplicationInitializer.class},
loader = AnnotationConfigContextLoader.class)
@PersistenceContext
@Transactional(transactionManager = "hibernateTransactionManager")
public class NewsDaoTest {

Другие вопросы по теме