我有一个A类,它使用了3个不同的带有自动装配的类
public class A () {
@Autowired
private B b;
@Autowired
private C c;
@Autowired
private D d;
}
当测试它们时,我想只有2个类(B & C)作为模拟,并有D类被自动连接为正常运行,这段代码对我不起作用:
@RunWith(MockitoJUnitRunner.class)
public class aTest () {
@InjectMocks
private A a;
@Mock
private B b;
@Mock
private C c;
@Autowired
private D d;
}
有没有可能这样做呢?
发布于 2017-06-12 17:43:06
我遇到了同样的问题,并尝试了Sajan Chandran的答案。它在我的例子中不起作用,因为我使用@SpringBootTest注解来加载所有bean的一个子集。我们的目标不是加载我正在模拟的bean,因为它们有许多其他依赖项和配置。
我发现以下解决方案的变体对我有效,它在正常情况下也是可用的。
@RunWith(SpringRunner.class)
@SpringBootTest(classes={...classesRequired...})
public class aTest () {
@Mock
private B b;
@Mock
private C c;
@Autowired
@Spy
private D d;
@InjectMocks
private A a;
@Before
public void init(){
MockitoAnnotations.initMocks(this);
}
}
https://stackoverflow.com/questions/34067956
复制相似问题