나는 이것을 이해할 수 없다. Spring Junit이 내 빈을 컨텍스트에 추가하지 않고있다. 제발 Welp !!컨텍스트에없는 SpringBoot JPA 테스트 빈
발생 원인 : org.springframework.beans.factory.NoSuchBeanDefinitionException : 'com.api.demo.store.FileStorage'유형의 유효한 Bean이 없습니다. autowire 후보로 적합한 적어도 하나의 bean이 필요합니다. 종속성 주석 : @ org.springframework.beans.factory.annotation.Autowired (필수 = true), @ org.springframework.beans.factory.annotation.Qualifier (값 = com.api.demo.store.FileStorageMemDB)} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound (DefaultListableBeanFactory.java:1493) org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency (DefaultListableBeanFactory.java:1104)에서 된 org.springframework.beans에서 . org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject에서 factory.support.DefaultListableBeanFactory.resolveDependency (DefaultListableBeanFactory.java:1066) (AutowiredAnnotationBeanPostProcessor.java:585) ... 더보기 (28)
@RunWith(SpringRunner.class)
@SpringBootTest
public class FileStorageMemDBTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private FileStorage fileStorage;
@Autowired private ApplicationContext ctx;
@Test
public void testRetrieveAll() {
FileInfo fileInfo = new FileInfo("fileOne", "GoodFile.txt", "test");
entityManager.persist(fileInfo);
fileStorage.retrieveAllFiles();
}
}
@Service
public interface FileStorage {
/**
* Stores file in an underlying file store
*
* @param File to store
* @param FileInfo file submission metadata
*/
public void store(MultipartFile mFile, FileInfo info) throws IOException;
/**
* Retrieves a list of all file
*
* @return array containing file metadata
*/
public List<FileInfo> retrieveAllFiles();
/**
* Retrieve file metadata by id
*
* @return file metadata if found
* @Param id of a file to retrieve
*/
public FileInfo retrieveFileMetadata(Long id);
}
/**
* Database implementation of FileStorage interface
*
*/
@Transactional
@Service
public class FileStorageMemDB implements FileStorage {
@PersistenceContext
private EntityManager entityManager;
@Override
public void store(MultipartFile incomingFile, FileInfo info) throws IOException {
......
entityManager.persist(info);
}
@Override
public List<FileInfo> retrieveAllFiles() {
return entityManager.createNamedQuery("query_find_all_records", FileInfo.class).getResultList();
}
@Override
public FileInfo retrieveFileMetadata(Long id) {
return entityManager.find(FileInfo.class, id);
}
}
'@SpringBootTest (classes = App.class)'를 사용해 주시겠습니까? App.class는'@ SpringBootApplication'으로 주해 된 주 클래스입니까? – varren