@InjectMocks注释。 java代码模拟

时间:2013-10-09 11:44:40

标签: java testing spring-mvc junit mockito

我想在一个方法上使用mock eventService和另一个真正的eventService。

   @Mock(name = "eventService")
        private EventService eventService;

        @InjectMocks
        private CandidateMenuController candidateMenuController = new CandidateMenuController();

如何在方法内部编写此代码。 我有CandidateMenuController candidateMenuController作为类字段。但是在一种方法中我想使用特定的eventService实现。

P.S 我有构造函数并为EventService设置了get方法

2 个答案:

答案 0 :(得分:1)

从类和您要使用mock的方法中删除@MockitoJunitRunner执行MockitoAnnotations.initMocks(this); 在您希望使用EventService的特定实现的方法中,您必须通过调用构造函数手动创建它。

答案 1 :(得分:1)

由于您没有任何setter方法来设置EventService的值,您可以使用反射来设置EventService的值:

@Test
public void testWithRealization() {
Field field = candidateMenuController.getClass().getDeclaredField("eventService");
field.set(candidateMenuController, new EventServiceImpl());

// Test Code
}