У меня есть мое весеннее загрузочное приложение java, и я хотел бы написать несколько тестов, используя mockmvc;так что это класс тестирования:
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = {IndexController.class})
@ComponentScan(basePackages={"com.sherlock.discoteque"})
@EnableJpaRepositories("com.sherlock.discoteque.repository")
@EntityScan(basePackages={"com.sherlock.discoteque"})
public class DiscotequeApplicationTests {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext webApplicationContext;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.standaloneSetup(webApplicationContext).build();
}
@Test
public void testAlbumInfo() throws Exception{
this.mockMvc.perform(get("/")).andExpect(status().isOk());
}
}
, но при выполнении кода у меня появляется следующее сообщение об ошибке:
Поле albumRepository в com.Для sherlock.discoteque.controller.AlbumController требуется компонент типа 'javax.persistence.EntityManagerFactory', который не может быть найден.
Точка внедрения имеет следующие аннотации: - @ org.springframework.beans.factory.annotation.Autowired (обязательно = true)
Действие:
Подумайте об определении bean-компонента типа 'javax.persistence.EntityManagerFactory' в вашей конфигурации.... Вызвано: org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания бина с именем 'albumController': Неудовлетворенная зависимость, выраженная через поле 'albumRepository';вложенное исключение: org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем 'albumRepositoryImpl': не удалось внедрить зависимости персистентности;вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException : нет доступного квалифицирующего компонента типа 'javax.persistence.EntityManagerFactory'. Причины: org.springframework.beans.factory. beanCreationException: ошибка: * ошибка 101 *'albumRepositoryImpl': не удалось внедрить зависимости персистентности; вложенным исключением является org.springframework.beans.factory.NoSuchBeanDefinitionException: нет доступного квалифицирующего компонента типа 'javax.persistence.EntityManagerFactory'
10 *странно, учитывая тот факт, что без класса тестирования все работает нормально.Это класс AlbumRepositoryImpl
public class AlbumRepositoryImpl implements AlbumRepositoryCustom {
private final static String RECENT_ALBUMS_QUERY = "select * from album order by createdate desc limit ?";
@PersistenceContext
public EntityManager entityManager;
@Override
public List<Album> getRecentAlbums(int size) {
if(size<1){
throw new IllegalArgumentException();
}
Query query = entityManager.createNativeQuery(RECENT_ALBUMS_QUERY, Album.class);
query.setParameter(1, size);
return query.getResultList();
}
}
, и внутри AlbumController у меня есть атрибут
@Autowired
private AlbumRepository albumRepository;
, и у меня также есть интерфейс AlbumRepository (расширенный от JpaRepository).Я действительно не знаю, что делать, чтобы веб-приложение работало на тесте, кто-нибудь может мне помочь?