我有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;

07-24 09:25