【问题标题】:Android Local Tests vs Instrumented TestAndroid 本地测试与仪器测试
【发布时间】: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


【解决方案1】:

是在开发机器上的本地 JVM 上还是在 Android 设备/模拟器上运行测试的决定并不取决于您的代码是否同步。通常你只想在本地运行单元测试,因为它更快并且允许你使用 TDD。您的测试执行网络请求,因此它们不是单元测试,因为它们依赖于服务器 - 它们是集成测试。最好在 Android 设备上运行集成测试以获得更好的反馈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2019-12-19
    • 2013-09-21
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多