通过InjectMocks间谍注入对象

App*_*ler 5 java mockito spy

我需要在具有@Autowired Logger实现的类上运行一系列单元测试。实现的基本思想是:

@Mock Logger logger;
@InjectMocks
TestedClass tested;
Run Code Online (Sandbox Code Playgroud)

但我想保存日志输出功能。

Mockito lib是否允许使用@InjectMock注入对象?我看过@Spy批注的示例,但是当我尝试使用它时,我总是收到NullPointerException。我知道我总是可以直接使用反射,但是这样做的目的是避免使用此类代码。

App*_*ler 5

好。如果没有答案,我必须自己回答。

要通过@InjectMock批注推送活动对象,请使用@Spy批注:

@Spy
Logger logger = LoggerFactory.getLogger("");
@InjectMocks
TestedClass tested = new TestedClass();
Run Code Online (Sandbox Code Playgroud)

唯一的问题是@Spy无法处理final(以及其他一些东西)类,在我的案例中,我要继续这样做。