【发布时间】:2016-03-03 16:16:30
【问题描述】:
我正在尝试检查我的 API 在单元测试中是否可用,以确保它以 200 响应。
现在,我的问题是我不确定何时使用 Local Test 以及何时必须使用 Android Instrumentation Tests。我知道我必须使用 Instrumented Tests 进行 UI 测试,但是如何测试端点?
我使用 Retrofit2 进行通信。并尝试使用 Local Tests 以 2 种方式测试 Endpoint。
示例 1(同步,不起作用)
public class EndpointTest {
EndpointApi api;
SimpleInjection simpleInjection;
@Before
public void setUp() {
simpleInjection = new SimpleInjection();
api = simpleInjection.getEndpointApi();
}
@Test
public void endpoint_1_isAvailable() {
Call<ApiResponse> rootCall = api.getRoot();
try {
int reponseCode = rootCall.execute().code();
Assert.assertEquals(200, reponseCode);
} catch (IOException e) {
Assert.fail();
}
}
}
示例 2(异步,确实有效)
public class EndpointTest {
EndpointApi api;
SimpleInjection simpleInjection;
@Before
public void setUp() {
simpleInjection = new SimpleInjection();
api = simpleInjection.getEndpointApi();
}
@Test
public void endpoint_2_isAvailable() {
Call<ApiResponse> rootCall = api.getRoot();
rootCall.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(Call<ApiResponse> call, Response<ApiResponse> response) {
Assert.assertEquals(200, response.code());
}
@Override
public void onFailure(Call<ApiResponse> call, Throwable t) {
Assert.fail();
}
});
}
}
我必须将 Android Instrumentation Test 用于异步模式吗?
【问题讨论】:
-
你把同步和异步标题混在一起了,从代码示例 1 看起来是同步的,而示例 2 看起来是异步的
-
是的,这是真的。已经更正了。谢谢
标签: android unit-testing retrofit2