我对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相关的错误。
所以这些注释似乎正在影响我的测试。
答案 0 :(得分:0)
感谢您的评论。 M. Deinum和shinjw的评论向我展示了正确的道路。我需要缩小入口点,以便它没有多余的东西。
如果您以合理的方式构建代码,则您的 @SpringBootApplication类默认用作配置 您的测试。
那么重要的是不要乱扔应用程序的主类 具有特定于特定区域的配置设置 其功能。
因此,我将ComponentScan
和EnableSwagger2
批注移动到其他Configuration
类中的其他位置,并且达到了目的。
感谢您的帮助!