首页 > 解决方案 > Java 8 到 11 中 org.easymock.EasyMock.capture 的替代方案

问题描述

我正在尝试在我的测试中捕获值

...
final Capture<MyDTO> myDTOCaptured = new Capture<MyDTO>();

EasyMock.expect(this.serviceMock.execute(capture(myDTOCaptured)).andReturn(someResult);
...

文档说:

已弃用的 API

org.easymock.EasyMock.capture(Capture) 由于执行更严格的擦除,在 Java 7 中无法编译

http://easymock.sourceforge.net/api/easymock/3.1/deprecated-list.html

3.1 版是我们正在使用的版本。

在 Java 8+ 中是否有捕获的替代方法?我想另一种选择是升级版本。

标签: javajava-8easymocktype-erasure

解决方案


升级到最新的 EasyMock (4.2) 并使用通用方法capture(Capture<T> capture)作为替代

期望任何对象,但捕获它以供以后使用

示例

final Capture<TwoWayChannelMessage> initiateCapture = new Capture<>();
connection.sendToClient(capture(initiateCapture));

推荐阅读