SpringBoot JPA测试bean不在上下文中

SpringBoot JPA测试bean不在上下文中,spring,spring-boot,spring-data-jpa,spring-junit,Spring,Spring Boot,Spring Data Jpa,Spring Junit,我想不出这个。。出于某种原因,SpringJUnit没有将我的bean添加到上下文中。请欢迎 原因:org.springframework.beans.factory.NoSuchBean定义异常:没有可用的“com.api.demo.store.FileStorage”类型的合格bean:至少需要1个符合autowire候选条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true),

我想不出这个。。出于某种原因,SpringJUnit没有将我的bean添加到上下文中。请欢迎

原因:org.springframework.beans.factory.NoSuchBean定义异常:没有可用的“com.api.demo.store.FileStorage”类型的合格bean:至少需要1个符合autowire候选条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true),@org.springframework.beans.factory.annotation.Qualifier(value=com.api.demo.store.filestoragemdb)} 位于org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493) 位于org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104) 位于org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) 位于org.springframework.beans.factory.annotation.AutoWiredNotationBeanPostProcessor$AutoWiredFeldElement.inject(AutoWiredNotationBeanPostProcessor.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);
    }


}
@RunWith(SpringRunner.class)
@春靴测试
公共类filestoragemdbtest{
@自动连线
私人测试管理者实体管理者;
@自动连线
私有文件存储文件存储;
@自动连线专用应用程序上下文ctx;
@试验
公共void testRetrieveAll(){
FileInfo FileInfo=newfileinfo(“fileOne”、“GoodFile.txt”、“test”);
entityManager.persist(fileInfo);
fileStorage.retrieveAllFiles();
}
}
@服务
公共接口文件存储{
/**
*将文件存储在基础文件存储中
*
*@param要存储的文件
*@param FileInfo文件提交元数据
*/
公共void存储(MultipartFile mFile,FileInfo info)抛出IOException;
/**
*检索所有文件的列表
*
*@return包含文件元数据的数组
*/
公共列表检索所有文件();
/**
*按id检索文件元数据
*
*@如果找到,返回文件元数据
*要检索的文件的@Param id
*/
公共文件信息检索文件元数据(长id);
}
/**
*文件存储接口的数据库实现
*
*/
@交易的
@服务
公共类FileStorageMDB实现文件存储{
@持久上下文
私人实体管理者实体管理者;
@凌驾
公共无效存储(MultipartFile incomingFile,FileInfo info)引发IOException{
......
entityManager.persist(信息);
}
@凌驾
公共列表检索所有文件(){
返回entityManager.createNamedQuery(“查询查找所有记录”,FileInfo.class).getResultList();
}
@凌驾
公共文件信息检索文件元数据(长id){
返回entityManager.find(FileInfo.class,id);
}
}
谢谢瓦伦

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


成功了

你能试试
@SpringBootTest(classes=App.class)
其中App.class是你的主类,并用
@SpringBootApplication
注释吗?如果你的答案有助于解决你的问题,你可以也应该接受。