设为首页 加入收藏

TOP

mock学习总结(一)
2017-10-16 18:20:19 】 浏览:7406
Tags:mock 学习 总结

Moke测试学习总结:

 

被测试代码:

public class LoginPresenter {

    private UserManager mUserManager = new UserManager();

 

    public void login(String username, String password) {

        if (username == null || username.length() == 0) return;

        if (password == null || password.length() < 6) return;

 

        mUserManager.performLogin(username, password);

    }

 

}

 

单元测试

public class LoginPresenterTest {

 

    @Test

    public void testLogin() throws Exception {

        LoginPresenter loginPresenter = new LoginPresenter();

        loginPresenter.login("xiaochuang", "xiaochuang password");

 

        //验证LoginPresenter里面的mUserManager的performLogin()方法得到了调用,同时参数分别是“xiaochuang”、“xiaochuang‘s password”

        ...

    }

}

 

问题1:么验证 LoginPresenter 里面的 mUserManager 的 performLogin() 方法得到了调用,以及它的参数是正确性呢?

 下面开始mock的学习

Moko概念:

Mock的概念,其实很简单,我们前面也介绍过:所谓的mock就是创建一个类的虚假的对象,在测试环境中,用来替换掉真实的对象,以达到两大目的:

  1. 验证这个对象的某些方法的调用情况,调用了多少次,参数是什么等等
  2. 指定这个对象的某些方法的行为,返回特定的值,或者是执行特定的动作

验证开始:

 

试误1:

public class LoginPresenterTest {

 

    @Test

    public void testLogin() throws Exception {

        Mockito.mock(UserManager.class);

        LoginPresenter loginPresenter = new LoginPresenter();

        loginPresenter.login("xiaochuang", "xiaochuang password");

 

        UserManager userManager = loginPresenter.getUserManager();

        Mockito.verify(userManager).performLogin("xiaochuang", "xiaochuang password");  //<==

    }

}

 

试误2:

public class LoginPresenterTest {

 

    @Test

    public void testLogin() throws Exception {

        UserManager mockUserManager = Mockito.mock(UserManager.class);  //<==

        LoginPresenter loginPresenter = new LoginPresenter();

       

        loginPresenter.login("xiaochuang", "xiaochuang password");

 

        Mockito.verify(mockUserManager).performLogin("xiaochuang", "xiaochuang password");  //<==

    }

}

 

正确:

 

public class LoginPresenter {

 

    private UserManager mUserManager = new UserManager();

 

    public void login(String username, String password) {

        if (username == null || username.length() == 0) return;

     

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇jvm-双亲委派模型 下一篇Java 接口篇

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目