【发布时间】:2016-02-10 20:36:35
【问题描述】:
我有这个服务接口
public interface ABC {
public String getAbc();
}
我有一个使用这个服务的控制器
public class Do {
@Inject ABC abc;
public String doAbc() {
String a = abc.getAbc();
}
}
在我的单元测试中,我希望能够模拟出这个 ABC 而不必提供实际的实现。以下是有效的:
public class TestDo {
@Mock
private Do do;
@Mock
private ABC abc;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
do.abc = abc;
}
@Test
public void testDo() {
when(do.doAbc()).thenCallRealMethod();
do.doAbc();
assertSomething...
}
}
但是我不想做的是do.abc = abc;,从我所有的搜索来看,为了做@InjectMock,我需要提供一个具体的类。有没有办法让我使用该接口,但又能够将模拟接口注入 do 而无需在 Do Class 中暴露我的 ABC 注入?我想让 ABC 成为私有变量,并且仍然能够通过 Mockito 注入接口。
【问题讨论】:
标签: java unit-testing junit mockito