来源:泡在网上的日子
链接:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0505/2835.html
原文:http://rexstjohn.com/unit-testing-with-android-studio/
在Android Studio中可以进行单元测试
很多的文章指导你应该在build.gradle
文件里面添加几行代码从而允许单元测试,并且告诉你应该在项目依赖中添加Android测试库。
其实你并不需要按照这种错误的方式去做,因为这是完全没有必要的。
Android Studio本身就支持Android单元测试,你只需要在你的项目中配置一下就可以了。
注意:还有好几种广受欢迎的Android单元测试框架,比如Robolectric,它们比我在这里提到的需要更多的配置,我希望在未来可以以这个题目再写一些指导文章。
创建你的单元测试文件夹
我喜欢把单元测试放在我的主项目里面,比如com.example.tianjia.myapplication.
,你可以把测试目录放到你想要的地方。开始之前,像下面这样,先创建你的测试文件夹。(译者注:这一步不是必须的,你也可以把单元测试类创建在与 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
然后关闭,运行我们的单元测试
我使用Genymotion来完成所有的事情,所以开启你的Genymotion然后运行test,也可以用真机连接调试。
在assertion这一行添加一个断点,然后点击 run ->debug
,目的是为了证明Android Studio确实执行了我们的单元测试。
当你的测试没有通过,点击Console
然后查看综合的输出结果,看下我们测试失败的原因
通过控制台,可以看到打印出的错误原因:
“junit.framework.AssertionFailedError: expected:<1> but was:<5>”
at com.example.tianjia.myapplication.MyTest.test(MyTest.java:15)
已经完成简单单元测试了,并且定位到错误了。