Java 如何使用EasyMock.capture捕获传入参数?

Java 如何使用EasyMock.capture捕获传入参数?,java,junit,easymock,Java,Junit,Easymock,我正在测试一个类,希望监视对特定方法的调用,即保存调用参数以供以后分析 测试是用完成的,所以使用该特性是合乎逻辑的。但是,我设法找到的示例对我来说并不适用-我在捕获行中遇到以下编译错误: EasyMock中的expect(T)不能应用于(void) 原因:不存在类型变量T的实例,因此void符合T 如果有人能为我指出我的错误,那就太好了。下面是一段代码片段: import static org.easymock.EasyMock.capture; import org.easymock.Cap

我正在测试一个类,希望监视对特定方法的调用,即保存调用参数以供以后分析

测试是用完成的,所以使用该特性是合乎逻辑的。但是,我设法找到的示例对我来说并不适用-我在捕获行中遇到以下编译错误:

EasyMock中的expect(T)不能应用于(void) 原因:不存在类型变量T的实例,因此void符合T

如果有人能为我指出我的错误,那就太好了。下面是一段代码片段:

import static org.easymock.EasyMock.capture;

import org.easymock.Capture;
import org.easymock.CaptureType;
import org.easymock.EasyMock;
import org.junit.Before;

class B {

}

class A {
    public void doSomething(B input) {

    }
}

public class ATest {
    private Capture<B> capturedData;
    private A testObject;

    @Before
    private void setUp() {
        capturedData = EasyMock.newCapture(CaptureType.ALL);
        testObject = EasyMock.createNiceMock(A.class);
        EasyMock
                .expect(testObject.doSomething(capture(capturedData)))
                .anyTimes();
    }
}
导入静态org.easymock.easymock.capture;
导入org.easymock.Capture;
导入org.easymock.CaptureType;
导入org.easymock.easymock;
导入org.junit.Before;
B类{
}
甲级{
公共无效剂量测定(B输入){
}
}
公开课考试{
私人捕获捕获数据;
私有测试对象;
@以前
私有无效设置(){
capturedData=EasyMock.newCapture(CaptureType.ALL);
testObject=EasyMock.createNiceMock(A.class);
轻松的
.expect(testObject.doSomething(capture(capturedData)))
.任何时候();
}
}

提前多谢

您的问题与捕获无关,而是与
doSomething()
方法的返回类型有关:

由于
A.doSomething(B input)
是返回类型
void
,因此您不希望该方法返回任何内容,因此无法使用
EasyMock.expect()
。相反,只需调用该方法并使用
EasyMock.expectLastCall()
,如下所示:

testObject.doSomething(capture(capturedData));
EasyMock.expectLastCall().anyTimes();
EasyMock.expectLastCall()
声明希望执行
expectLastCall()
之前的最后一次方法调用。然后,您可以像处理
expect()
一样处理它,例如将
anytime()
添加到它