繁体   English   中英

如何防止SpringJUnit4ClassRunner加载所有@Configuration类

[英]How to prevent the SpringJUnit4ClassRunner load all @Configuration classes

在单元测试课程中,我具有以下配置:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = WebAppConfigTest.class)
public class ExampleTest {

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

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

WebAppConfig类

@EnableWebMvc
@ComponentScan(basePackages = {"br.com.example"})
@PropertySource(value="classpath:application.properties")
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {

WebAppConfigTest类

@ComponentScan(basePackages = {"br.com.example"})
@Configuration
public class WebAppConfigTest {

如何防止此类退出测试包加载?

对于组件扫描,Spring不会将包与src / test / java或src / main / java区别开。

@ComponentScan(basePackages = {"br.com.example"})

本质上是从“ br.com.example”开始扫描所有@Configurations,当前软件包和子软件包中的所有软件包。 这些是为您提供的选项:

  1. 更改程序包结构,以提供更具体的程序包以扫描测试类。
  2. 您可以使用@ComponenScan中的过滤器来包含/排除特定的程序包/类。 这样加载应用程序上下文时,可以避免spring不需要的类。
  3. 如果可以手动选择所需的配置以加载测试的上下文,则甚至可以完全删除@ComponentScan并在“ classes”属性中指定所有配置类。
  4. 您可以在配置类中使用@Profile,在测试类中使用@ActiveProfiles来映射要在特定配置文件中加载的配置类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM