首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止SpringJUnit4ClassRunner加载所有@配置类

如何防止SpringJUnit4ClassRunner加载所有@配置类
EN

Stack Overflow用户
提问于 2016-09-23 14:56:38
回答 1查看 1.5K关注 0票数 1

在我的单元测试类中,我有以下配置:

代码语言:javascript
复制
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = WebAppConfigTest.class)
public class ExampleTest {

但是在加载WebAppConfigTest类之后,它将加载具有@Configuration并且不在测试包(src/ test /java)的WebAppConfig类。

注意:未将类WebAppConfig配置为加载到单元测试中,但仍在充电。

WebAppConfig类

代码语言:javascript
复制
@EnableWebMvc
@ComponentScan(basePackages = {"br.com.example"})
@PropertySource(value="classpath:application.properties")
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {

WebAppConfigTest类

代码语言:javascript
复制
@ComponentScan(basePackages = {"br.com.example"})
@Configuration
public class WebAppConfigTest {

如何防止该类从测试包中加载?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-25 09:50:03

对于组件扫描,Spring不区分包与src/test/java或src/main/java。

代码语言:javascript
复制
@ComponentScan(basePackages = {"br.com.example"})

本质上是扫描从"br.com.example“开始的所有@配置、当前包中的所有包和子包。以下是您可以选择的选项:

  1. 更改包结构,以提供一个更具体的包来扫描测试类。
  2. 您可以使用@ComponenScan中的筛选器来包含/排除特定的包/类。在以这种方式加载应用程序上下文时,您可以避免在spring之前获取不需要的类。
  3. 如果可能的话,可以选择所需的配置来加载测试的上下文,甚至可以完全删除@ComponentScan,并在" classes“属性中指定所有配置类。
  4. 您可以在配置类中使用@Profile,在测试类中使用@ActiveProfiles来映射要加载到特定配置文件中的配置类。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39663837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档