我想写一种集成测试,但只针对一个特定的类,这意味着我想自动连接该类中的所有字段,但忽略同一目录中的任何类。
这可能吗?
示例:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {TestConfig.class})
public class JunitTest {
@Autowired
private MyService service;
}
//how to only scan that specific class?
@ComponentScan(basePackageClasses = {MyService.class, MyInjectedService.class})
@Configuration
public class TestConfig {
}
@Service
public class MyService {
@Autowired
private MyInjectedService service;
}
在这里,我希望spring忽略与所提到的两个basePackageClasses
相同目录中的任何类。
3条答案
按热度按时间23c0lvtd1#
@ContextConfiguration
和@SpringApplicationConfiguration
支持的classes
属性只需要引用 * 带注解的类 *;它们不必是@Configuration
类。因此,记住这一点,您应该能够完全放弃组件扫描,而简单地声明两个带注解的组件,如下所示:
换句话说,如果
MyService
和MyInjectedService
不依赖于Spring Boot的任何特性,那么您可以安全地将@SpringApplicationConfiguration
替换为@ContextConfiguration
。此致!
Sam(*Spring测试上下文框架 * 的作者)
fruv7luv2#
您可以使用筛选器来自定义扫描。在那里,您可以使用如下所示的属性扩展ComponentScan注解:
1tu0hz3e3#
您可以使用
@Import
注解。它比@ComponentScan
注解更易读,也更简短。