Я пытался протестировать свое веб-приложение, но аннотация @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({)}
в тестовом классе, который не расширяет какой-либо другой тестовый класс, аннотированный @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 {
Удалите
@TestExecutionListeners({})
.