我有一个 A 类,它使用 3 个不同的 Autowiring 类
public class A () {
@Autowired
private B b;
@Autowired
private C c;
@Autowired
private D d;
}
在测试它们时,我希望只有 2 个类(B 和 C)作为模拟,并让 D 类正常运行时 Autowiring ,此代码不适用于我:
@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)
关于java - 如何在 Junit 中使用 @InjectMocks 和 @Autowired 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34067956/