Android 中的单元测试 (普通Java类中的Function测试篇)

网友投稿 285 2022-09-16

Android 中的单元测试 (普通Java类中的Function测试篇)

现在写程序写着写着对自己写的程序就没有信心了,代码量的上升,逻辑越来越复杂,非常需要单元测试(Unit Test)。现在感觉没有单元测试和版本控制,一个项目很容易崩溃。对程序的一点修改很可能会影响整个项目的实现。之前单元测试只是用过JUnit 。现在让我们来看下Android 中的单元测试是如何实现的。

主要会涉及下面的四个方面:

​​1.普通Java类中的Function测试​​

​​2.Android Activity 测试(涉及到控件,和Activity生命周期)​​

​​3.Android Content Provider 测试​​

​​4.Android Service 测试​​

1.普通Java类中的Function测试(实战)

先新建一个普通的Android 项目(HelloAndroid),里面多一个自定义的类(MyClass),类里有一个实现加法的方法sum(int a,int b),我们就来测试下这个加法能不能正常工作。

建好的项目结构是这样的:

MyClass.java 的内容非常简单,如下面的代码所示:

package com.waitingfy.android;public class MyClass { public int sum(int a,int b) { return a + b; }}

谁都知道这个方法不会有错,但是我们这里的目的是为了知道如何使用单元测试,所以都先不要对这个类太深究了,还是要对它进行测试。

接下来是建立一个Android Test的项目

输入好名称后的下一步,就是要选择我们要测试的目标项目,这里我们当然选择HelloAndroid

建立完后的项目结构:

我们注意到自动生成的包名称为com.waitingfy.android.test,就是比我们测试目标多了个test,当然你也可以打开AndroidMainfest.xml查看,里面有targetPackage。

好了,开始写我们的测试类,记得这个类要继承TestCase,后面我们还会讲到AndroidTestCase,和ServiceTestCase。

src/com.waitingfy.android.test/TestMyClass.java,我一般用这样的命名,比较容易看出具体那个类出错了。

package com.waitingfy.android.test;import com.waitingfy.android.MyClass;import junit.framework.Assert;import junit.framework.TestCase;//非常关键的一点是继承了TestCasepublic class TestMyClass extends TestCase { MyClass myClass; /* * 测试类启动调用的方法,一般在这里初始化一些测试的条件,初始化类等。 * */ @Override protected void setUp() throws Exception { super.setUp(); myClass = new MyClass(); } //我们写的测试方法 public void testSum() { Assert.assertEquals("2", myClass.sum(1, 1)); } /* * 测试类结束调用的方法,一般在这里释放资源等。 * */ @Override protected void tearDown() throws Exception { super.tearDown(); }}

写好后就可以运行这个测试项目了,运行方法:

运行后,要稍微等几秒钟时间,Eclipse 会尝试编译两个项目HelloAndroid和HelloAndroidTest到手机或模拟器手机中,如果你进行任何修改,运行Android Junit Test,它还是会重新编译两个项目的。因为HelloAndroidTest是没有放到手机桌面上的,所以看不到,在管理应用程序当中还是可以看到的。

发现结果我们的testSum没有通过,=。=,查看了失败的记录,发现我们估计的值错了,应该是int 的2 ,把TestMyClass.java中的

Assert.assertEquals("2", myClass.sum(1, 1));

修改为:

Assert.assertEquals(2, myClass.sum(1, 1));

,就成功了,界面是绿色的。

好了先到这里。:)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python爬取《哆啦A梦-伴我同行2》影评,手把手带你绘制词云图!
下一篇:Android 中的单元测试(使用ServiceTestCase 进行 Service测试 例子)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~