如何在Junit中将@InjectMocks与@Autowired注释一起使用
我有一个使用自动装配的3个不同类的A类
public class A () { @Autowired
private B b;
@Autowired
private C c;
@Autowired
private D d;
}
在测试它们时,我只希望将其中两个类(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;
}
甚至有可能这样做吗?
回答:
应该是这样的
@RunWith(SpringJUnit4ClassRunner.class)public class aTest () {
@Mock
private B b;
@Mock
private C c;
@Autowired
@InjectMocks
private A a;
}
如果您不想D
成为别人,则Autowired
无需在Test
课堂上做任何事情。您Autowired
A
应具有的正确实例D
。此外,我认为你需要使用SpringJUnit4ClassRunner
的Autowiring
工作,用contextConfiguration
正确的设定。因为您没有使用MockitoJunitRunner
,所以需要mocks
使用
MockitoAnnotations.initMocks(java.lang.Object testClass)
以上是 如何在Junit中将@InjectMocks与@Autowired注释一起使用 的全部内容, 来源链接: utcz.com/qa/429151.html