Spring test integration not run 我如何处理这个错误?

Posted

技术标签:

【中文标题】Spring test integration not run 我如何处理这个错误?【英文标题】:Spring test integration not run how I deal with this error? 【发布时间】:2020-06-11 23:01:11 【问题描述】:

我有一个测试课程让我为这个错误而抓狂:

org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为 .imprimirRelatorio 的 bean 时出错:不满意 通过字段存储库表达的依赖关系;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 v1.teste.Service 类型的合格 bean 可用:至少预期 1 个有资格作为自动装配候选者的 bean。依赖注解: @org.springframework.beans.factory.annotation.Autowired(required=true)

在网上按分辨率搜索后,我无法运行测试。测试课是这样的:

@RunWith(SpringJUnit4ClassRunner.class)
public class imprimirRelatorio 


   @Autowired
   PautaService pautaRepository;

    @Test
    public void imprimirCabecalho()
        PautaReportBuilder pautaReportBuilder = new PautaReportBuilder();
        //Reuniao reuniao = reuniaoService.findOne(UUID.fromString("4c7d3fc8-f78d-4ed3-a1ad-83c5da822ea7"));


        try 
             pautaReportBuilder.cabecalhoRelatorios(reuniao);

         catch (Exception e)
        
            e.printStackTrace();
        
    






/* 更新 */

所以我忘了说我已经尝试了pautaService接口中的注解@service。在我尝试使用 @SpringBootTest 注释的测试类上也是如此。所以错误信息是不同的。

App.class

 @SpringBootApplication 
@ComponentScan("br.com.empresa123.sistema123.*") 
public class App  public static void main(String[] args)  
SpringApplication.run(App.class, args);
 
  

PautaService接口:

@Service
public interface PautaService 

    Page<Pauta> findAll(Pageable page);

    Pauta findOne(UUID uuid);

    Pauta save(Pauta pauta);
 

这是我测试的第一种方法,嵌套异常是:

org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“subjectController”的 bean 时出错:不满意 通过字段“subjectService”表达的依赖关系;嵌套异常 是 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“subjectService”的 bean 时出错:不满足的依赖关系 通过字段“domainSvc”表示;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“dominio”的 bean 时出错:不满足的依赖关系 通过字段“domainRepo”表示;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“domainReposImpl”的 bean 时出错:不满意 通过字段“sqlGenericPager”表示的依赖关系;嵌套异常 是 org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 “java.lang.String”类型的合格 bean 可用:预计在 至少 1 个符合自动装配候选资格的 bean。依赖 注释: @org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=sql-Generic-Pager)

【问题讨论】:

您的 PautaService 是否使用 @Service 进行了注解,它是否实现了 v1.teste.Service?我相信刚启动应用程序时您会遇到类似的错误。分享更多代码 不,PautaService 没有注释,但 PautaServiceImpl 有。我尝试用@Service 注释接口 PautaService 但仍然无法正常工作。 【参考方案1】:

对于集成测试,请在您的类上添加 @SpringBootTest

如果您的文件不在您的应用程序包中,请@ComponentScan()您的应用程序包。

【讨论】:

感谢 GabLeg ,但我尝试使用注释 @SpringBootTest 并且抛出了很多嵌套异常。我的 App.class 也有 @ComponentScan 这样的注释:@SpringBootApplication @ComponentScan("br.com.empresa123.sistema123.*") public class App public static void main(String[] args) SpringApplication.run(App.class, args); 我说的是在你的班级测试中添加@ComponentScan()。对困惑感到抱歉。如果您的测试类在文件夹br.com.empresa123.somethingDifferent 下,那么您的@SpringBootTest 没有找到您所有的bean 是正常的,因为他正试图在br.com.empresa123.somethingDifferent 下找到它们。这就是为什么你需要在你的测试类上添加@ComponentScan("br.com.empresa123.sistema123")。也许您可以添加添加@SpringBootTest时出现的堆栈跟踪。【参考方案2】:

我认为您忘记使用 @Service 注释对服务进行注释。如果是这样,请用@Service 标记服务CLASS

【讨论】:

【参考方案3】:

当我通过在我从未使用过的代码中丢失的注释进行搜索时,我解决了这个问题:

public abstract class BaseCustomRepository 

    // the class code 

    @Autowired
    @Qualifier("sql-Generic-Pager")
    protected String sqlGenericPager;

 

我从未使用过自定义存储库实现,因此我将重新考虑我将如何处理此类。感谢许多编码人员浪费时间来帮助我,感谢堆栈溢出来分享我的担忧。

我在笑这个问题,所有的麻烦都是我造成的,就像你在课堂上执行 git blame 命令并看到你的用户编写了错误的代码。

【讨论】:

以上是关于Spring test integration not run 我如何处理这个错误?的主要内容,如果未能解决你的问题,请参考以下文章

Spring test integration not run 我如何处理这个错误?

spring integration:如何从 Spring Controller 调用 Spring Integration?

如何在 Spring Integration 中轮询时根据主题过滤电子邮件

Spring Integration 没有为端点定义轮询器

spring-integration-file 的 junit 测试用例

Spring Integration - 跨步骤共享锁