单元测试系列之二如何运行单元测试

940 阅读2分钟

单元测试系列之一开篇

单元测试系列之二如何运行单元测试

单元测试系列之三Junit

单元测试系列之四Mockito

单元测试系列之五Powermock

单元测试系列之六Espresso

单元测试系列之七测试报告

如何在Android项目中运行单元测试

创建测试类

首先找到需要测试的类,右键,依次选择“go to” -- “Test”,然后选择“Create New Test”,根据需要勾选相应的方法,就可以创建对应的单元测试类了。

截屏2021-09-02 下午2.47.49.png

然后补充完整测试方法,详见上面的例子。

注意:在一个android project中,源代码默认是放在src/main/java下面的,需要启动模拟器或者真机进行单元测试的方法放在src/androidtest/java下面,不需要调用android api的单元测试放在src/test/java下面。我们演示的例子是放在src/test/java下面的。

运行测试类和方法

运行测试类可以右键“Run CalculatorTest ”,也可以点击左侧的运行图标: 截屏2021-09-02 下午3.14.55.png

,同样,只运行某个测试方法时也可以选择右键或者点击左侧图标两种方式。

截屏2021-09-02 下午3.08.19.png

从图中你可以看出,你可以按快捷键Ctrl+Shift+R快速运行,当然,这要求你的光标当前焦点是在这个方法内部的。如果你的焦点是在类内部,而不在某一个测试方法内部,那么Ctrl+Shift+R将运行这个测试类的所有测试方法。当然,你也可以通过右键点击测试类名来运行这个测试类里面的所有测试方法。

运行结束以后,你会在底部的“Run”这个tab看到运行的结果,如下图所示:

截屏2021-09-02 下午3.17.22.png

绿色代表测试通过,红色和黄色代表测试失败。

两种测试方式

一个类的方法按照有无返回值可以分为两种,对应的也有两种测试方式。

对于有返回值的方法,测试比较容易,比如与上面的Calculator例子,输入相应的参数,得到相应的返回值,然后验证得到的返回值跟预期的值是否一样,就可以了。

针对没有返回值的方法,比如下面登录的例子:

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

仔细想一下,这个方法也是有输出的,输出就是调用了mUserManagerperformlogin()方法,同时传了两个参数usernamepassword。所以我们只要验证了performlogin()方法被调用了且传入的参数正确,就可以说明这个方法能正常工作。至于如何进行这样的验证,由于设计mock的概念,后面介绍mockito框架时再介绍。