Junit 访问原始对象而不是在powermock mockito中返回?

Junit 访问原始对象而不是在powermock mockito中返回?,junit,mocking,mockito,powermock,Junit,Mocking,Mockito,Powermock,让我们举个例子(注意我使用的是PowerMock-Mockito) 现在,当我们使用mockito时,我们有了类似于when(A.method1(obj2)).thenReturn(obj3)的api; 调用方法时,我们可以访问传递给测试用例中method1的原始对象obj,而不是返回自定义对象obj3吗?您需要使用thenAnswer()。我相信签名应该是 public Object method1(Object obj) 不确定为什么要将测试通过的同一对象返回到测试中。在这种情况下,你到

让我们举个例子(注意我使用的是PowerMock-Mockito)

现在,当我们使用mockito时,我们有了类似于when(A.method1(obj2)).thenReturn(obj3)的api;
调用方法时,我们可以访问传递给测试用例中method1的原始对象obj,而不是返回自定义对象obj3吗?

您需要使用
thenAnswer()
。我相信签名应该是

public Object method1(Object obj) 
不确定为什么要将测试通过的同一对象返回到测试中。在这种情况下,你到底想测试什么

更新

看起来你要找的是
ArgumentCaptor

ArgumentCaptor<Object> captor = ArgumentCaptor.forClass(Object.class);
verify(a).method1(captor.capture());
Object realObject = captor.getValue()
ArgumentCaptor captor=ArgumentCaptor.forClass(Object.class);
验证(a).method1(captor.capture());
对象realObject=captor.getValue()

但是只有当我通过测试代码调用answer时,answer才会起作用,我在测试真实代码时需要实时对象。@user2181531如果您想在调用模拟时获得在测试类中创建的对象,请检查我更新的答案。我得到,实际上,与这个模拟异常没有任何交互。@user2181531如果您可以在测试和测试代码下发布您的类,您是否考虑阅读他们的文档?他们在这里介绍了许多示例用例:
ArgumentCaptor<Object> captor = ArgumentCaptor.forClass(Object.class);
verify(a).method1(captor.capture());
Object realObject = captor.getValue()