参考:http://chriszou.com/2016/04/13/android-unit-testing-start-from-what.html
1. What
2. Why
什么是单元测试
单元测试,是为了测试某一个类的某一个方法能否正常工作,而写的测试代码。
为什么要做单元测试
写单元测试,会用到一些单元测试框架。常见的Java单元测试框架有JUnit、TestNG等等。
在android project实现单元测试
1.创建
2.运行
鼠标放在测试类的方法里,则运行此方法;
鼠标放在测试类里,则运行测试类的所有方法。
3.例子:
public class Calculator {
public int add(int one, int another) {
//为了简单起见,暂不考虑溢出等情况。
return one + another;
}
}
public class CalculatorTest {
public void testAdd() throws Exception {
Calculator calculator = new Calculator();
int sum = calculator.add(1, 2);
Assert.assertEquals(3, sum);
}
}
The difference between Unit Test and Integration Test
(单元测试与集成测试的区别)
单元测试只是测试一个方法单元,它不是测试一整个流程。这种整个流程的测试,叫做集成测试。
例子:
public void login() {
String username = ...//get username from username EditText
String password = ...//get password from password EditText
//do other operation like validation, etc
...
mUserManager.performlogin(username, password);
}
单元测试是指 测试login方法,但不能保证performlogin方法的正确性。
集成测试是指 给两个输入框设置正确的用户名和密码,点击login button, 最后页面得到更新。
所以Mock测试,就是针对单元测试里调用其他的方法。
MOCK测试
@Test
public void testLogin() throws Exception {
UserManager mockUserManager =Mockito.mock(UserManager.class);//创建这个对象
LoginPresenter loginPresenter = new LoginPresenter();
loginPresenter.setUserManager(mockUserManager);//使login方法里的UserManager对应的是上面创建的对象,根据需要设置此方法
loginPresenter.login("xiaochuang", "xiaochuang password");
Mockito.verify(mockUserManager).performLogin("xiaochuang", "xiaochuang password");//使用Mockito,验证一个对象的方法调用情况
}