关闭

Android Studio下测试用例的编写

标签: android测试单元测试测试用例Junit
7398人阅读 评论(0) 收藏 举报
分类:

测试用例是什么,测试用例其实就是一段普通的程序代码,通常是带有期望的运行结果的,测试者可以根据最终的运行结果来判断程序是否能正常工作。
单元测试是什么,单元测试是指对软件中最小的功能模块进行测试,如果软件的没一个单元都能通过测试,说明代码的健壮性已经非常好了。
在Eclipse下也没编写过测试用例,总觉得多此一举。然后看了Android Studio新建的工程目录下总会自动生成test文件夹,看着很不爽,所以需要了解它是怎么工作的。

在工程目录与main同级的test文件夹下的包下,建立一个java文件叫HaolvTest继承自AndroidTestCase,在里面写了一个方法如下:

public class HaolvTest extends AndroidTestCase{

    @Override
    protected void setUp() throws Exception {
        super.setUp();
    }

    public void testAddAct(){
        assertEquals(0, AppManager.getInstance().actSize());
        SplashActivity splashActivity = new SplashActivity();
        AppManager.getInstance().addActivity(splashActivity);
        assertEquals(1, AppManager.getInstance().actSize());
    }

    @Override
    protected void tearDown() throws Exception {
        super.tearDown();
    }
}

然后右键这个文件Run,等了一会儿,看到控制台输出错误日志如下:

java.lang.RuntimeException: Method setUp in android.test.AndroidTestCase not mocked. See http://g.co/androidstudio/not-mocked for details.

    at android.test.AndroidTestCase.setUp(AndroidTestCase.java)
    at com.example.admin.myapplication.HaolvTest.setUp(HaolvTest.java:18)
    at junit.framework.TestCase.runBare(TestCase.java:139)
    ......


Process finished with exit code -1

然后简单搜索了一下,也没发现什么有价值的答案,后来直接看了原来默认的ExampleUnitTest的编写方式,发现它并没有继承自AndroidTestCase,而是直接在方法上加了一个Test注解,然后我也把我的测试用例代码改成这样,果然可以测试通过,然后添加了一个已知的错误来测试,如下:

 @Test
    public void testAddAct(){
        assertEquals(0, AppManager.getInstance().actSize());
        SplashActivity splashActivity = new SplashActivity();
        AppManager.getInstance().addActivity(splashActivity);
        assertEquals(1, AppManager.getInstance().actSize());
        AppManager.getInstance().addActivity(splashActivity);
        assertEquals(1, AppManager.getInstance().actSize());
    }

这个时候执行的结果是错误的,如下:

Expected :1
Actual   :2
 <Click to see difference>


    at org.junit.Assert.fail(Assert.java:88)
    at org.junit.Assert.failNotEquals(Assert.java:834)
    at org.junit.Assert.assertEquals(Assert.java:645)
    at org.junit.Assert.assertEquals(Assert.java:631)
    at com.example.admin.myapplication.HaolvTest.testAddAct(HaolvTest.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    .....

可以看到期望是1,实际值是2,所以可以测试出addActivity这个方法还需要优化。

总结:在AS环境下,写测试用例更方便了,啥都不用准备了,直接在ExampleUnitTest写个方法@Test就行,方法内容主要就是通过assertEquals去判断等,后面再细细研究,这里先开个头,做个准备工作。。(以上部分文字和代码参考《第一行代码》13.5小节)

在新建一个Android Project后,会发现在在src目录下有三个子目录,分别是androidTest、main、test目录,搜索了一下,得知androidTest目录是Android Instrumentation Tests的文件夹(Instrumentation :模拟、使用仪器),test目录是Unit Tests的文件夹。
看来要进行真正的Android测试,应该是在androidTest目录下编写测试用例。

一步步摸索,一点点进步。

0
4
查看评论

Android Studio 写个单元测试用例,就是这么方便

这里先说下背景:测试提了bug,经过定位发现是参数传的不对,一个bean里面的int类型的ID为0。后台小姐姐一口咬定,她传的参数不可能为0,要么大于0,要么是null。我就不禁怀疑是不是我把null转成了0,毕竟这个字段是int类型。那怎么验证呢?打桩传递假数据再出包验证太慢(我们的项目出一次包要...
  • csdnzzu
  • csdnzzu
  • 2017-07-27 09:38
  • 1291

Android 编写测试用例

测试是软件工程中一个非常重要的环节,而测试用例又可以显著地提高测试的效率和准确性。测试用例其实就是一段普通的程序代码,通常是带有期望的运行结果的,测试者可以根据最终的运行结果来判断程序是否能正常工作。1、在项目中创建一个包用于写测试类2、在项目清单文件之中配置其中com.example.demo是测...
  • qq_26761229
  • qq_26761229
  • 2016-11-14 16:41
  • 1453

Android Studio 进行单元测试完整教程

前言 为了这个AndroidStudio的单元测试,从下午搞到晚上才搞明白咋操作。 我学一个新知识总是那么坎坷,经历无数的错误路径,才可能找到正确的路在哪儿。 我的AndroidStudio我的AndroidStudio是1.5.1版本,但是进行单元测试应该很早的版本就可以了,至...
  • pdskyzcc1
  • pdskyzcc1
  • 2016-03-22 10:45
  • 29909

Android 测试用例

编写测试用例测试是软件工程中一个非常重要的环节,而测试用例又可以显著地提高测试的效率和准确性,测试用例其实就是一段普通的程序代码,通常是带有期望的运行结果的,测试者可以根据最终的运行结果来判断程序是否能正常工作。创建测试工程测试工程通常不是独立存在的,而是依赖于某个现有工程的,一般比较常见的做法是在...
  • lzl370515231
  • lzl370515231
  • 2016-02-22 12:34
  • 789

android测试用例编写

android中写测试用例也是用junit,测试用例代码风格是junit3的风格。java中测试用例中使用junit3需要继承TestCase(junit4则不需要,直接用annotation即可);android的测试用例需要继承AndroidTestCase。连重新的setUp和tearDown...
  • QQCrazyBoy
  • QQCrazyBoy
  • 2014-11-24 23:28
  • 1308

android测试用例

  • 2014-04-03 10:24
  • 18.15MB
  • 下载

Android单元测试

本文相关的代码下载链接:                       ...
  • stevenhu_223
  • stevenhu_223
  • 2012-12-16 22:57
  • 22420

Android产品研发(十九)-->Android studio中的单元测试

本文我们将讲解如何在android studio中进行单元测试,其可以很方便的为我们提供功能性测试,所以如果项目中有用到测试数据的时候,可以先进行单元测试,如果可以正常输出数据了,然后再到UI中执行,这样会提高一些工作效率
  • qq_23547831
  • qq_23547831
  • 2016-07-11 21:42
  • 12669

android进行单元测试时出现java.lang.RuntimeException: Unable to resolve activity for: Intent ……

Android单元测试
  • u013983998
  • u013983998
  • 2014-10-11 08:49
  • 1667

Android单元测试遇到的问题

使用的框架:Robolectric 3.0 1. FileNotFoundException: build\intermediates\bundles\debug\AndroidManifest.xml (系统找不到指定的路径。) 解决方法:编辑configuration,设置工作目录...
  • misea
  • misea
  • 2016-06-29 15:52
  • 4927
    个人资料
    • 访问:176629次
    • 积分:2793
    • 等级:
    • 排名:第15150名
    • 原创:58篇
    • 转载:5篇
    • 译文:0篇
    • 评论:52条
    联系我吧
    我的App
    博客专栏
    文章分类