如何仅在JUnit弹簧测试中自动装配特定的类?

mem*_*und 5 java junit spring spring-test

我想写一种集成测试,但是只针对特定的类。这意味着我希望自动连接该类中的所有字段,但忽略同一目录内的所有类。

那可能吗?

例:

@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;
}
Run Code Online (Sandbox Code Playgroud)

在这里,我希望spring忽略与上述两个目录相同的目录中的任何类basePackageClasses

sve*_*tek 3

您可以使用过滤器来自定义扫描。在那里,您可以使用如下属性扩展 ComponentScan Annotation:

@ComponentScan(
basePackages = {"com.my.package"}, 
useDefaultFilters = false,
includeFilters = {
    @Filter(type = FilterType.ASSIGNABLE_TYPE, value = {MyService.class, MyInjectedService.class})
})
Run Code Online (Sandbox Code Playgroud)