DataJpaTest寻找HttpServletRequest

时间:2018-08-17 09:29:41

标签: java spring-boot

我对DataJpaTest批注的用法有疑问。我正在尝试完全按照文档中所示测试Jpa存储库。

我收到一个无法解决HttpServletRequest的错误。这是因为我的另一个bean正在使用它。

为什么测试试图使用不相关的bean?我希望DataJpaTest仅加载与Jpa相关的Bean,存储库等。似乎正在尝试加载所有Bean,这些Bean当然具有自己的依赖性。

编写DataJpaTest以便仅关注Jpa存储库的正确方法是什么?

这是在Java 8,Spring Boot 2和junit 5上。

更新1:感谢您的评论。我的测试课程实际上是基于documentation的。

我的Spring Boot应用程序类是这样的:

@SpringBootApplication
@EnableSwagger2
@EnableCorsFilter
@ComponentScan(basePackages = {"com.acme.superapp"})
@SuppressWarnings("HideUtilityClassConstructor")
public class Swagger2SpringBoot {
    public static void main(String[] args) {
        new SpringApplication(Swagger2SpringBoot.class).run(args);
    }
}

这实际上有所帮助,因为在删除“ ComponentScan”注释后,我得到了另一个与Swagger相关的错误。

所以这些注释似乎正在影响我的测试。

1 个答案:

答案 0 :(得分:0)

感谢您的评论。 M. Deinum和shinjw的评论向我展示了正确的道路。我需要缩小入口点,以便它没有多余的东西。

根据documentation

  

如果您以合理的方式构建代码,则您的   @SpringBootApplication类默认用作配置   您的测试。

     

那么重要的是不要乱扔应用程序的主类   具有特定于特定区域的配置设置   其功能。

因此,我将ComponentScanEnableSwagger2批注移动到其他Configuration类中的其他位置,并且达到了目的。

感谢您的帮助!