只需将您的模拟命名为serviceA和serviceB。从Mockito
文档中:
属性设定器注入;模拟将首先按类型解析,然后,如果存在多个相同类型的属性,则按属性名称和模拟名称的匹配进行解析。
在您的示例中:
@InjectMocks ServiceCaller classUnderTest;@Mock SomeService serviceA;@Mock SomeService serviceB;
请注意,使用@InjectMocks时不必手动创建类实例。
不过,我个人更喜欢使用构造函数注入依赖项。它使得在测试中注入模拟更加容易(只需使用模拟调用构造函数-
无需反射工具即可
@InjectMocks((这很有用,但隐藏了某些方面))。除了使用TDD之外,还清晰可见测试类需要哪些依赖关系,IDE也可以生成构造函数存根。
Spring framework完全支持构造函数注入:
@Beanpublic class ServiceCaller { private final SomeService serviceA; private final SomeService serviceB; @Autowired public ServiceCaller(@Qualifier("serviceA") SomeService serviceA, @Qualifier("serviceB") SomeService serviceB) { ... } ...}可以使用以下代码测试此代码:
@Mock SomeService serviceA;@Mock SomeService serviceB;//in a setup or test methodServiceCaller classUnderTest = new ServiceCaller(serviceA, serviceB);



