多语言展示
当前在线:548今日阅读:103今日分享:49

使用Android Studio进行本地单元测试

本文主要是为了演示使用Android Studio进行本地单元测试(Local Unit Tests)。如果你要进行的单元测试与Android没有任何依赖,或者只有简单的依赖的话,这个时候你应该在本地开发机器上测试。这种测试方法效率高,因为它可以帮助你避免每次把测试运行时的目标应用程序和单元测试代码加载到真实设备或模拟器带来的额外开销。因此,执行时间为运行单元测试大大降低。通过这种方法,您通常使用一个模拟框架,像的Mockito,以满足任何依赖关系。
工具/原料

Android Studio 1.4

方法/步骤
2

工程建立好之后,切换项目到Project模式,mac下按『Command』+『1』可以看到新生成的代码目录结构。'app/src/main/java',这个目录下是放我们app的源代码;'app/src/test/java',这个目录下是放我们本地单元测试的源代码。

3

注意:如果工程建立好之后提示:『failed to resolve:junit:junit:4.12』,如下图1。这时需要修改我们工程的build.gradle打开左侧的Project侧边栏,找到我们的工程build.gradle,图2,修改红框里的两个'jcenter()'依赖库为:maven { url 'http://jcenter.bintray.com/' }maven { url 'http://repo1.maven.org/maven2/'}这两句话。结果如图三:

4

打开我们模块app的build.gradle,图1,添加两个依赖项:testCompile 'org.mockito:mockito-core:1.10.19'androidTestCompile 'org.hamcrest:hamcrest-library:1.1'结果如下图2

5

修改完成后,mac下按『Command』+『F9』,进行build。或者选择菜单栏里的『Build』--『Make Project』进行build。完成后,我们可以在android studio 下方的Event Log里看到整个过程执行的时间与结果。

6

打开'app/src/test/java/.../ExampleUnitTest.java'再顶部improt添加一个引用:import static org.hamcrest.core.IsEqual.equalTo;在ExampleUnitTest类中添加一个方法'multiply_isCorrect',添加如下内容:@Testpublic void multiply_isCorrect() throws Exception{    assertThat(4*4,equalTo(16));}使用@Test对方法进行注解,表示这个方式是需要测试的方法。assertThat是UnitTest的断言方法,第一个参数是我们执行的结果,第二个参数用hamcrest的equalTo来检测是否等于16。assertThat(4*4,equalTo(16));结合使用hamcrest,这种语法使得测试代码更容易阅读。

7

打开android studio 左边的『Build Variants』,将『Test Artifact』改为『Unit Tests』

8

在'SimpleUnitTest'类中的空白地方右击鼠标,选择『Run SimpleUnitTest』过一会就会得到结果,或者直接按快捷键:『control』+『option』+『R』选择SimpleUnitTest,同样会执行。

9

这次我们修改一下我们的方法:multiply_isCorrect,将4*4改为4*3,来测试一下:这次将鼠标在multiply_isCorrect方法体单击一下,使得光标停留在multiply_isCorrect方法里。这个时候在右击鼠标,选择『Run multiply_isCorrect()...』来直接执行测试方法multiply_isCorrect。或者直接按快捷键:『control』+『option』+『R』,选择multiply_isCorrect()来执行。可以看到,测试没有通过。预期的结果是16,但是实际计算的结果却是12。

注意事项

进行这种单元测试的代码必须与Android没有任何依赖,或者只有简单的依赖。

推荐信息