我有MyTestClass1:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@DirtiesContext
public class MyTestClass1 {
@Configuration
static class Config {
@Bean
public FileSerivce fileService() {
return Mockito.mock(FileSerivce.class);
}
}
}
和另一个测试类MyTestClass2:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MyTestClass2 {
@Autowired
FileSerivce fileService;
}
问题是,在类MyTestClass2中,fileService是从MyTestClass1而不是实际的fileService自动进行模拟装配的。当我从MyTestClass1删除模拟定义时,MyTestClass2根据需要使用真实的fileService。
如何删除MyTestClass2对MyTestClass2的副作用?
最佳答案
您可以将数据添加到@ContextConfiguration
批注,例如要加载的特定配置。或者,可以将@Qualifier
批注添加到FileService
中的TestClass2
并强制使用具有给定名称的FileService实例。
因此,例如,如果您的真实FileService bean被称为“ fileServiceImpl”,则在MyTestClass2中,您可能拥有
@Autowired
@Qualifier("fileServiceImpl")
FileService fileService;