Unit testing 用机器人技术改造单元测试

Unit testing 用机器人技术改造单元测试,unit-testing,mockito,retrofit,robolectric,Unit Testing,Mockito,Retrofit,Robolectric,是否有可能测试改装回调是否成功 我的代码非常简单: @Config(constants = BuildConfig.class, sdk = 21, manifest = "app/src/main/AndroidManifest.xml") @RunWith(RobolectricGradleTestRunner.class) public class RetrofitCallTest { private MainActivity mainActivity; @Mo

是否有可能测试改装回调是否成功

我的代码非常简单:

@Config(constants = BuildConfig.class, sdk = 21,
            manifest = "app/src/main/AndroidManifest.xml")
@RunWith(RobolectricGradleTestRunner.class)
public class RetrofitCallTest {

private MainActivity mainActivity;

@Mock
private RetrofitApi mockRetrofitApiImpl;

@Captor
private ArgumentCaptor<Callback<List<MyObject>>> callbackArgumentCaptor;

@Before
public void setUp() {            
    MockitoAnnotations.initMocks(this);

    ActivityController<MainActivity> controller = Robolectric.buildActivity(MainActivity.class);
    mainActivity = controller.get();

    RestClient.setApi(mockRetrofitApiImpl);

    controller.create();
}

@Test
public void shouldFillAdapter() throws Exception {
    Mockito.verify(mockRetrofitApiImpl)
        .getYourObject(callbackAgrumentCaptor.capture());

    int objectsQuantity = 10;
    List<MyObject> list = new ArrayList<YourObject>;
    for(int i = 0; i < objectsQuantity; ++i) {
        list.add(new MyObject());
    }

    callbackArgumentCaptor.getValue().success(list, null);

    ListAdapter adapter = mainActivity.getAdapter(); 
    assertThat(adapter .getItemCount(), equalTo(objectsQuantity));
}
@Config(常数=BuildConfig.class,sdk=21,
manifest=“app/src/main/AndroidManifest.xml”)
@RunWith(RobolectricGradleTestRunner.class)
公开课考试{
私人活动;
@嘲弄
私人改装空气污染指数改装空气污染指数;
@俘虏
私人ArgumentCaptor callbackArgumentCaptor;
@以前
public void setUp(){
initMocks(this);
ActivityController控制器=Robolectric.buildActivity(MainActivity.class);
mainActivity=controller.get();
setApi(mockapimpl);
controller.create();
}
@试验
public void shouldFillAdapter()引发异常{
Mockito.verify(mockapimpl)
.getYourObject(callbackAgrumentCaptor.capture());
int objectsQuantity=10;
列表=新的ArrayList;
for(int i=0;i
很明显,当api返回成功时,我测试代码是否正常工作


但是有没有可能测试api是否返回成功?

我不明白这个问题。你是说你想测试改型本身吗?
callbackArgumentCaptor.getValue().success(list,null);
是人工调用
@Override public void success(…)
我的回调。但我想测试api是否返回成功或失败,即我是否调用了适当的curl,或者我的请求是否正确。我不会称之为单元测试,而是集成测试。你可以用模拟web服务器来做。我不明白这个问题。你的意思是想测试改型本身吗?
callbackArgumentCaptor.getValue().success(list,null);
是人工调用回调函数的
@Override public void success(…)
。但是我想测试api是否返回成功或失败,即我是否调用了适当的curl或者我的请求是否正确。我不会调用它,而是调用集成测试。您可以使用模拟web服务器进行测试