簡體   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