Spring   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java – @DataJpaTest需要测试之外的类大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

SpringBoot应用程序中,我想对存储库层进行一些测试.

@RunWith(SpringRunner.class)
@DataJpaTest
public class VisitRepositoryTest {

     @Autowired
     private TestEntitymanager entitymanager;

     @Autowired
     private VisitRepository visitRepository;

     ...
}

当我尝试从VisitRepositoryTest运行测试时,我收到有关DefaultConfigservice的错误

那么这需要运行应用程序吗?

我试图在VisitRepositoryTest中放置一个DefaultConfigservice bean,但是不允许这样做.

这个类在我的应用程序中使用

@EntityScan(basePackageClasses = {Application.class,jsr310JpaConverters.class})
@SpringBootApplication
@Enablescheduling
public class Application implements schedulingConfigurer {

      @Autowired
      private DefaultConfigservice defaultConfigservice;
      ...
}

如何管理?

编辑

在我的应用程序中,我在cron选项卡中使用此类:

@service
public class DefaultConfigserviceImpl implements DefaultConfigservice {

    private final DefaultConfigRepository defaultConfigRepository;

    @Autowired
    public DefaultConfigserviceImpl(final DefaultConfigRepository defaultConfigRepository) {
         this.defaultConfigRepository = defaultConfigRepository;
    }
}
最佳答案
问题是你的@SpringBootApplication有一些关于调度的附加配置,并且通过添加它而没有为你的测试定制@SpringBootConfiguration,这样的调度要求对于一切都是必需的.

我们退一步吧.添加@DataJpaTest时,Spring Boot需要知道如何引导应用程序上下文.它需要找到您的实体和您的存储库.切片测试将以递归方式搜索@SpringBootConfiguration:首先在实际测试的包中,然后是父级,如果找不到,则会抛出异常.

@SpringBootApplication是一个@SpringBootConfiguration,所以如果你不做任何特别的事情,切片测试将使用你的应用程序作为配置源(这是IMO,一个很好的认值).

切片测试不会盲目地启动你的应用程序(否则不会切片)所以我们所做的是禁用自动配置并为手头的任务定制组件扫描(仅扫描实体和存储库,并在使用@时忽略所有其余部分) DataJpaTest).这是一个问题,因为应用了应用程序配置并且调度内容应该可用.但是不扫描依赖bean.

在您的情况下,如果您想使用切片,则调度配置应移至schedulingConfiguration或其他东西(不会像上面所解释的那样使用切片进行扫描).无论如何,我认为分离schedulingConfigurer实现更加清晰.如果你这样做,你会发现错误会消失.

现在让我们假设您希望Fooservice也可用于该特定测试.而不是像dimitrisli建议的那样启用组件扫描(这基本上禁用了对您的配置的切片),您只需导入缺少的类

@RunWith(SpringRunner.class)
@DataJpaTest
@Import(Fooservice.class)
public class VisitRepositoryTest {
  ...
}

大佬总结

以上是大佬教程为你收集整理的java – @DataJpaTest需要测试之外的类全部内容,希望文章能够帮你解决java – @DataJpaTest需要测试之外的类所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。