2016-09-17 84 views
2

我寫我的應用程序的集成測試,並希望使用自定義webmvc配置我的測試春天開機測試配置沒有被拾起

我有我的基本包com.marco.nutri三類:

  • 申請(其被標註有@SpringBootApplication)
  • MvcConfig(@Configuration和@EnableWebMVC)
  • SecurityConfig(@Configuration和@EnableWebSecurity)

我的測試是在包br.com.marco.nutri.integration.auth:

@RunWith(SpringRunner.class) 
@SpringBootTest(classes={Application.class, WebMvcTestConfiguration.class, SecurityConfig.class}) 
public class ITSignup { 

    //Test code 

} 

我在包com.marco.nutri.integration測試配置類:

@TestConfiguration 
@EnableWebMvc 
public class WebMvcTestConfiguration extends WebMvcConfigurerAdapter { 
    //Some configuration 
} 

但是當我運行我的測試中,MvcConfig.class被拾取,而不是WebMvcTestConfiguration.class

我在做什麼錯?

回答

2

你可以註釋與@Profile("test")您的測試配置和真正的與@Profile("production")

,然後在屬性文件中把財產spring.profiles.active=production並在測試類放在@Profile("test")。所以當你的應用程序啓動時,它將使用「生產」類,當測試星將使用「測試」類。

從文檔

不同於常規@Configuration類使用@TestConfiguration 不能防止自動檢測@SpringBootConfiguration的。

不像會被用來代替 應用程序的主要配置,嵌套@TestConfiguration 類將除了您的應用程序的主 配置中使用嵌套類@Configuration。

+0

但是當我從我的生產類中刪除配置時,它選擇TestConfiguration類 –

+0

你怎麼知道TestConfiguration類沒有被選中..你使用斷點還是打印一些東西? –

+0

我只是問,因爲這兩個配置類運行會有點棘手,因爲@TestConfiguration不會取代生產類。他們兩人將一起工作。 –