我试图检查我的API是否在单元测试中可用,以确保它以200响应。
现在,我的问题是,我不确定何时使用本地测试以及何时必须使用 Android Instrumentation测试。我知道我必须使用Instrumented Tests进行UI测试,但是如何测试端点?
我使用Retrofit2进行通信。并尝试使用Local Tests以两种方式测试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进行异步模式?
答案 0 :(得分:1)
是否在开发计算机或Android设备/模拟器上的本地JVM上运行测试的决定不是基于您的代码是否同步。通常你只想在本地运行单元测试,因为它更快,并允许你使用TDD。您的测试执行网络请求,因此它们不是单独测试,因为它们依赖于服务器 - 它们是集成测试。最好在Android设备上运行集成测试以获得更好的反馈。