如何在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。此外,我认为你需要使用SpringJUnit4ClassRunnerAutowiring工作,用contextConfiguration正确的设定。因为您没有使用MockitoJunitRunner,所以需要mocks使用

MockitoAnnotations.initMocks(java.lang.Object testClass)

以上是 如何在Junit中将@InjectMocks与@Autowired注释一起使用 的全部内容, 来源链接: utcz.com/qa/429151.html

回到顶部