java - 单元测试很慢,因为spring classpath扫描多次扫描同一个包

标签 java spring unit-testing junit spring-data

使用 Spring 3 和 spring 数据,我有一个包 com.company.repository,其中包含与 spring 数据存储库相关的所有类(大约 50 个类)。

组件扫描声明为:

<context:component-scan base-package="com.company"/>

在我的单元测试中,扫描 Spring 组件的步骤很长(大约 10 秒)。 启用跟踪日志后,我注意到包“com.company.repository”被多次扫描。 事实上,方法 ClassPathScanningCandidateComponentProvider.findCandidateComponents("com.company.repository") 被多次调用,并具有相同的值。 我不明白为什么我有这种行为。 而且我不会通过自定义实现覆盖它(或者我找不到如何做到这一点)。 而且我不明白为什么默认实现中没有缓存?

有人知道我为什么会有这种行为吗?正常吗?

作为补充,以下是与我的案例相关的堆栈:

ClassPathScanningCandidateComponentProvider.findCandidateComponents(String) line: 224   
RepositoryBeanDefinitionBuilder.detectCustomImplementation(BeanDefinitionRegistry, ResourceLoader) line: 154    
RepositoryBeanDefinitionBuilder.registerCustomImplementation(BeanDefinitionRegistry, ResourceLoader) line: 116  
RepositoryBeanDefinitionBuilder.build(BeanDefinitionRegistry, ResourceLoader) line: 97  
RepositoryBeanDefinitionParser.registerGenericRepositoryFactoryBean(RepositoryConfiguration<XmlRepositoryConfigurationSource>, ParserContext) line: 101 
RepositoryBeanDefinitionParser.parse(Element, ParserContext) line: 71   
JpaRepositoryNameSpaceHandler(NamespaceHandlerSupport).parse(Element, ParserContext) line: 73   
BeanDefinitionParserDelegate.parseCustomElement(Element, BeanDefinition) line: 1419 
BeanDefinitionParserDelegate.parseCustomElement(Element) line: 1409 
DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(Element,  BeanDefinitionParserDelegate) line: 184  
...
XmlBeanDefinitionReader.doLoadBeanDefinitions(InputSource, Resource) line: 390

最佳答案

也许您的测试配置为在每次测试后创建和销毁您的 spring 上下文。 检查您的测试基础配置。

关于java - 单元测试很慢,因为spring classpath扫描多次扫描同一个包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38814434/

相关文章:

java - Primefaces 复选框客户端值

java - 有没有一种方法可以使用创建 JOptionPane 的字符串的方法? ( java )

java - 如何只为一个特殊路径添加过滤器 WebSecurityConfigurerAdapter

java - 具有不同参数的 Spring Prototype bean

java - 在 Spring 数据注释中混合

java - SpringBoot 2.2.1 groovyMarkupConfigurer 异常

java - Spring Security jsp 授权标签不起作用

python - IPython 和单元测试,固定测试不显示为固定

ios - 断言日期时测试失败

c++ - 处理绝对差异的 BOOST_CHECK_CLOSE 版本