2

我想用@WebMvcTest測試我的控制器並模擬依賴關係,但Spring Boot的AutoConfiguration會自動加載我的Couchbase(Spring Data)配置。 Couchbase在運行測試的某些平臺上不可用,所以Test類將拋出一個Exception。我如何從AutoConfiguration機制中排除一些類?如何排除使用@WebMvcTest時使用Spring的AutoConfiguration添加的類?

我試着excludeFilters選項@WebMvcTest@ActiveProfile加載另一個應用程序上下文,但沒有奏效。

測試配置:

@RunWith(SpringRunner.class) 
@WebMvcTest(value = ExchangeJobImportController.class, excludeFilters = @ComponentScan.Filter(classes = CouchbaseConfiguration.class)) 
@ActiveProfiles("test") 
public class ExchangeJobImportControllerTest { 
    ... 
} 

Couchbase配置:

@Configuration 
@EnableCouchbaseAuditing 
@EnableConfigurationProperties({CouchbaseProperties.class}) 
@EnableCouchbaseRepositories(basePackages = "com....") 
public class CouchbaseConfiguration extends AbstractCouchbaseConfiguration { 
    ... 
} 

回答

2

經過一些掙扎我找到了解決辦法:排除在@WebMvcTest註釋的@SpringBootApplication註解類:

@RunWith(SpringRunner.class) 
@WebMvcTest(value = ExchangeJobImportController.class, excludeAutoConfiguration = Application.class, secure = false) 
@ActiveProfiles("localhost") 
public class ExchangeJobImportControllerTest { 
    ... 
} 

爲了記錄,我使用的是Spring Boot 1。 5.1.RELEASE

+0

努力找到一個過濾器失敗一小時的配置!謝謝! – Antimo

相關問題