簡體   English   中英

如何單元測試需要Web服務調用的Android應用程序

[英]How to unit test android app which requires a web service calls

以下是我在項目中使用的工具和框架。

  1. 改造
  2. 匕首2
  3. 昂首闊步
  4. Swagger改造客戶端生成器

我還在我的項目中實現了MVP設計模式。

我只是想知道我是否需要使用真正的后端或者只需要模擬后端以進行測試。 如果我需要模擬后端什么是重新開始的工具

swagger提供任何模擬Web服務的工具

什么是單元測試android(MVP)主要是演示者的最佳實踐

我在這里發帖是因為我沒有在網上找到任何正確答案所有這些問題

我為演示者寫了一個示例測試用例,如果我做錯了,請告訴我

主持人

 public void doLogin(String userName, String password) {
        loginView.showProgressBar(true);
        AuthenticationcontrollerApi authService = mDataClient.createService(AuthenticationcontrollerApi.class);
        UserCredentials userCredentials = new UserCredentials();
        userCredentials.setUserName(userName);
        userCredentials.setPassword(password);
        authService.authorizeUsingPOST(userCredentials, new Callback<String>() {
            @Override
            public void success(String s, Response response) {
                loginView.showProgressBar(false);
                loginView.onLoginSuccess(true, s);
            }

            @Override
            public void failure(RetrofitError error) {
                loginView.showProgressBar(false);
                loginView.onLoginFailure(error);
            }
        });
    }

測試

@RunWith(MockitoJUnitRunner.class)
public class LoginPresenterTest {

    @Mock
    protected AuthenticationcontrollerApi authService;

    @Mock
    protected DataClient mDataClient;

    @Mock
    LoginView loginView;


    private LoginPresenter loginPresenter;


    @Before
    public void setUp() {
        loginPresenter = new LoginPresenter(mDataClient);
        loginPresenter.attachView(loginView);
        when(mDataClient.createService(AuthenticationcontrollerApi.class)).thenReturn(authService);
    }

    @Test
    public void loginSuccessful() {
        String a = "";
        loginPresenter.doLogin("abc", "abc");
        verify(loginView).showProgressBar(true);
    }

    @After
    public void detachView() {
        loginPresenter.detachView();
    }
}

提前致謝

單元測試應測試“單元”。 這意味着所有依賴項都應該由您明確控制(例如模擬)。

有集成測試可以測試不同部分的集成行為,但這是一個不同的主題。

讓我們來看看你的問題:

我只是想知道我是否需要使用真正的后端或者只需要模擬后端以進行測試。 如果我需要模擬后端什么是重新開始的工具

您不需要正在測試單元的真實后端。 您不希望您的測試受到后端錯誤的影響。

Mockito是推薦的工具。 你只是模仿行為(你在樣本測試中開始做什么)。

swagger提供任何模擬Web服務的工具

除了Mockito,我認為你不需要任何特別的東西。

什么是單元測試android(MVP)主要是演示者的最佳實踐

在演示者中,您可以模擬視圖和數據源(在您的情況下是Web服務)並編寫測試,為測試場景提供模擬數據。 通過這種方式,您可以測試演示者的業務邏輯,而不是Web服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM