Я пытаюсь проверить, доступен ли мой API в модульном тесте, чтобы убедиться, что он отвечает 200.
Теперь моя проблема в том, что я не совсем уверен, когда использовать Локальный тест, а когда мне нужно использовать Android Instrumentation Tests. Я знаю, что мне нужно использовать инструментальные тесты для тестирования пользовательского интерфейса, но как проверить конечную точку?
Для связи использую Retrofit2. И попытался протестировать 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 для асинхронного режима?