2016-03-03 62 views
3

我想檢查我的API是提供一個單元測試中,以確保其與200Android的本地測試VS儀表測試

現在迴應,我的問題是,我真的不知道何時使用本地測試以及何時必須使用Android儀器測試。我知道我必須使用Instrumented測試進行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儀器測試異步模式?

+1

你有同步和異步標題混合,從代碼示例1看起來同步,而示例2看起來異步 – Bhargav

+0

是的,這是真的。已經更正。謝謝 – shadox

回答

1

是否在開發機器上或Android設備/仿真器上的本地JVM上運行測試的決定不取決於您的代碼是否同步。通常你只想在本地運行單元測試,因爲它速度更快,並允許你使用TDD。您的測試會執行網絡請求,因此它們不是單位測試,因爲它們依賴於服務器 - 它們是集成測試。最好在Android設備上運行集成測試以獲得更好的反饋。