Java 单元测试:如何验证参数是否已传递给构造函数?
我的Android应用程序上有以下代码: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的同一个
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