【问题标题】:How to unit test android app which requires a web service calls如何对需要 Web 服务调用的 Android 应用程序进行单元测试
【发布时间】:2016-06-26 13:49:23
【问题描述】:

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

  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();
    }
}

提前致谢

【问题讨论】:

    标签: android unit-testing junit retrofit swagger


    【解决方案1】:

    单元测试应该测试一个“单元”。这意味着它的所有依赖项都应该由您显式控制(例如模拟)。

    有测试不同部分的集成行为的集成测试,但这是一个不同的主题。

    让我们来看看你的问题:

    我只想知道我需要使用真正的后端还是只需要 模拟后端以进行测试。如果我需要模拟后端 推荐的工具是什么

    您不需要真正的后端来测试单元。您不希望您的测试受到后端错误的影响。

    Mockito 是为此推荐的工具。您只是模拟行为(您在示例测试中开始执行的操作)。

    swagger 是否提供任何工具来模拟 web 服务

    我认为除了 Mockito 之外你不需要任何特别的东西。

    Unit testing android (MVP)主要是presenter的最佳实践是什么

    在演示者中,您模拟视图和数据源(在您的情况下为 Web 服务)并编写测试,为您的测试场景提供模拟数据。通过这种方式,您可以测试演示者的业务逻辑,而不是 Web 服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-17
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      相关资源
      最近更新 更多