使用Android Studio进行单元测试

这篇文章介绍了在Android Studio中进行单元测试的基础部分。

在Android Studio中可以进行单元测试

很多教程都指导你应该在“build.gradlew”中添加几行代码来开启“instrument tests” 功能,而且还需要添加 Android 测试库的项目依赖。

其实你并不需要按照这种错误的方式去做,因为这是完全没有必要的。

Android Studio本身就支持Android单元测试,你只需要在你的项目中简单配置一下就可以了。

注意:还有好几种流行的Android单元测试框架,比如Robolectric,这些框架涉及到的配置和设置比我在这里提到的更多,我希望在未来可以以这个主题写一些指导教程。

创建你的单元测试文件夹

我喜欢把单元测试放在我的主项目里面,比如“com.mypath.tests.” ,你可以把测试目录放到你想放的任何地方。在开始之前,像下面这样,先创建你的"test"文件夹。(译者注:这一步不是必须的,你也可以把单元测试类创建在与Android Studio默认的ApplicationTest类相同的路径下面)

接下来,创建一个叫做 “ExampleTest”的类,要继承自InstrumentationTestCase

然后可以添加一段简单的测试代码,我们知道这段代码肯定会运行失败

public class ExampleTest extends InstrumentationTestCase {
    public void test() throws Exception {
        final int expected = 1;
        final int reality = 5;
        assertEquals(expected, reality);
    }
}

注意:所有的测试方法必须以"test"开头,否则Android Studio不能找到要进行单元测试的方法,你将会得到各种各样的错误,并且无法正常执行。

为你的项目配置单元测试

现在我们已经有了一个必然会运行失败的测试用例,我们必须把它run起来。

首先点击"Run-> Edit Configurations"

然后点击“+”,从左上角选择添加一个 Android Tests,然后你可以将这个测试配置重新命名为"test"或与之相关的名字

然后就会创建如下的测试项目配置

从下拉菜单中选择你当前的module

接下来,选择"All in Package"选项,然后把你的刚才创建的测试文件夹选中。你也可以选择“All in Module”选项,这样Android Studio会自动的找到你整个Module中的所有测试单元,你也可以通过更具体的类或者是方法选项,进一步缩小测试范围。

做完这一切之后,看起来应该像下面这样

我也喜欢选中下面的“Show chooser dialog”,这样当每次运行的时候,我可以指定如何去运行

现在点击"Apply"然后关闭,你现在应该可以看到你的测试案例已经作为一个可以运行的项目配置在Android Studio上面的工具栏上了

运行我们的单元测试

我使用Genymotion来完成所有的事情,所以开启你的Genymotion然后运行test

在assertion这一行添加一个断点,然后点击 “run debug mode”,目的是为了证明Android Studio确实执行了我们的单元测试。

当你开始你的测试工程之后,你会看到一个叫做“Running Tests…”的显示窗口

当你的测试没有通过,点击“Logcat”然后查看综合的输出结果,看下我们测试失败的原因

通过控制台,可以看到打印出的错误原因:

“junit.framework.AssertionFailedError: expected:<1> but was:<5>”

恭喜你,你已经成功测试出错误啦~

下面的这些资料在完成本文时,给了很大的帮助

  • http://mobilengineering.blogspot.com/2012/05/tdd-testing-asynctasks-on-android.html
  • http://www.vogella.com/tutorials/AndroidTesting/article.html
  • http://nikolaj.hesselholtskov.dk/2013/10/how-to-add-unit-tests-to-android-studio.html

最多阅读

简化Android的UI开发 4月以前  |  112001次阅读
Google Enjarify:可代替dex2jar的dex反编译 1年以前  |  1885次阅读
Android多渠道打包工具:apptools 1年以前  |  1697次阅读
Android权限 - 第一篇 1年以前  |  1647次阅读
Google Java编程风格规范(中文版) 1年以前  |  1612次阅读
Stetho 1年以前  |  1607次阅读
Android UI基本技术点 1年以前  |  1529次阅读
2015 Google IO带来的新 Android 开发工具 1年以前  |  1430次阅读
Gradle小知识#3:任务的顺序 1年以前  |  1409次阅读
MVP在Android平台上的应用 1年以前  |  1401次阅读
你应该知道的布局和属性 1年以前  |  1395次阅读
听FackBook工程师讲*Custom ViewGroups* 1年以前  |  1388次阅读
使用RxJava缓存Rest请求 1年以前  |  1379次阅读