2017-10-22 5 views
0

나는 이것을 이해할 수 없다. 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); 
    } 


} 
+2

'@SpringBootTest (classes = App.class)'를 사용해 주시겠습니까? App.class는'@ SpringBootApplication'으로 주해 된 주 클래스입니까? – varren

답변

1

감사 Varren는

@RunWith(SpringRunner.class) 
@SpringBootTest(classes = Application.class) 
public class FileStorageMemDBTest 

{...}

그것을했다. !! !!

+0

문제를 해결하는 데 도움이된다면 대답을 받아 들일 수 있고 받아 들여야합니다. –

관련 문제