Jav*_*ide 8 java spring spring-test spring-annotations spring-boot
我正在使用 Spring Boot 1.4.3.RELEASE 并希望在运行测试时从扫描中排除某些组件。
@RunWith(SpringRunner.class)
@SpringBootTest
@ComponentScan(
basePackages = {"com.foobar"},
excludeFilters = @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {AmazonKinesisRecordChecker.class, MyAmazonCredentials.class}))
public class ApplicationTests {
@Test
public void contextLoads() {
}
}
Run Code Online (Sandbox Code Playgroud)
尽管有过滤器,当我运行测试时,不需要的组件被加载并且 Spring Boot 崩溃,因为这些类需要 AWS 环境才能正常工作:
2017-01-25 16:02:49.234 ERROR 10514 --- [ main] o.s.boot.SpringApplication : Application startup failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'amazonKinesisRecordChecker' defined in file
Run Code Online (Sandbox Code Playgroud)
问题:如何使过滤器工作?
您需要的是,不要排除它们,而是使用@MockBean
. 如下所示
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {
@MockBean
AmazonCredentials amazonCredentials;
@Test
public void contextLoads() {
}
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您将让 Spring Context 知道您想要模拟AmazonCredentials
bean。有时,排除过滤器使用起来有点棘手。
希望这可以帮助!我很想探索我们是否有其他方法来完成这项工作。
归档时间: |
|
查看次数: |
6552 次 |
最近记录: |