我正在尝试检查我的 API 在单元测试中是否可用,以确保它响应 200。
现在,我的问题是我不太确定何时使用本地测试当我必须使用时Android 仪器测试。我知道我必须使用 Instrumented Tests 进行 UI 测试,但如何测试端点?
我使用 Retrofit2 进行通信。并尝试通过本地测试以两种方式测试端点。
示例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 进行异步模式吗?
决定是在开发机器上的本地 JVM 还是在 Android 设备/模拟器上运行测试并不取决于您的代码是否同步。通常您只想在本地运行单元测试,因为它速度更快并且允许您使用 TDD。您的测试执行网络请求,因此它们不是单元测试,因为它们依赖于服务器 - 它们是集成测试。最好在 Android 设备上运行集成测试以获得更好的反馈。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)