Java 单元测试:如何验证参数是否已传递给构造函数?

Java 单元测试:如何验证参数是否已传递给构造函数?,java,android,unit-testing,mockito,powermockito,Java,Android,Unit Testing,Mockito,Powermockito,我的Android应用程序上有以下代码: public Observable<Person> execute(MyObject myObject) { return service.execute(new MyApiRequest(myObject)); } 公共可观察执行(MyObject MyObject){ return service.execute(新的myaprequest(myObject)); } 我想使用Mockito测试的是,将MyObject的同一个

我的Android应用程序上有以下代码:

public Observable<Person> execute(MyObject myObject) {
    return service.execute(new MyApiRequest(myObject));
}
公共可观察执行(MyObject MyObject){
return service.execute(新的myaprequest(myObject));
}

我想使用Mockito测试的是,将MyObject的同一个实例传递给MyApiRequest构造函数。假设我们不知道MyApiRequest看起来怎么样。我只想测试execute()方法中的“myObject”参数是否与接收到的MyApiRequest相同。

是的,您可以使用ArgumentCaptor检查返回的MyApiRequest

// Create the object and the captor.
ArgumentCaptor<MyApiRequest> myApiRequestCaptor =
    ArgumentCaptor.forClass(MyApiRequest.class);
MyObject myObject = new MyObject();

// Run the test.
systemUnderTest.execute(myObject);

// Capture the MyApiRequest.
verify(service).execute(myApiRequestCaptor.capture());
MyApiRequest myApiRequest = myApiRequestCaptor.getValue();

// Now check the object identity.
assertSame("MyApiRequest should have the exact same passed-in object.",
    myObject, myApiRequest.getParameter());
//创建对象和捕获者。
参数捕获器myApiRequestCaptor=
ArgumentCaptor.forClass(myapirest.class);
MyObject MyObject=新的MyObject();
//运行测试。
systemUnderTest.execute(myObject);
//捕获myapi请求。
验证(服务).execute(myApiRequestCaptor.capture());
MyApiRequest MyApiRequest=myApiRequestCaptor.getValue();
//现在检查对象标识。
assertSame(“MyApiRequest应该具有完全相同的传入对象。”,
myObject,myapirest.getParameter());

是的,您可以使用ArgumentCaptor检查返回的MyAPI请求

// Create the object and the captor.
ArgumentCaptor<MyApiRequest> myApiRequestCaptor =
    ArgumentCaptor.forClass(MyApiRequest.class);
MyObject myObject = new MyObject();

// Run the test.
systemUnderTest.execute(myObject);

// Capture the MyApiRequest.
verify(service).execute(myApiRequestCaptor.capture());
MyApiRequest myApiRequest = myApiRequestCaptor.getValue();

// Now check the object identity.
assertSame("MyApiRequest should have the exact same passed-in object.",
    myObject, myApiRequest.getParameter());
//创建对象和捕获者。
参数捕获器myApiRequestCaptor=
ArgumentCaptor.forClass(myapirest.class);
MyObject MyObject=新的MyObject();
//运行测试。
systemUnderTest.execute(myObject);
//捕获myapi请求。
验证(服务).execute(myApiRequestCaptor.capture());
MyApiRequest MyApiRequest=myApiRequestCaptor.getValue();
//现在检查对象标识。
assertSame(“MyApiRequest应该具有完全相同的传入对象。”,
myObject,myapirest.getParameter());

由于您将
myObject
作为参数传递给myapirest,显然execute()方法中的“myObject”参数将与myapirest receivesyeah相同,但是如果我将代码更改为
return service.execute(new myapirest(new myObject())?我不知道你的意思。您可能会发现这一点很有帮助。我想知道我是否可以使用
ArgumentCaptor
某种方式。既然您将
myObject
作为myapirest的参数传递给myapirest,显然execute()方法中的“myObject”参数将与myapirest receivesyeah相同,但是如果我将代码更改为
return service.execute(new myapirest(new myObject()));?我不知道你的意思。你可能会发现这很有帮助。我想知道我是否能以某种方式使用
ArgumentCaptor