网站建设资讯

NEWS

网站建设资讯

单元测试android,单元测试中设计测试用例的依据是

android 单元测试有什么用

其实单元测试不仅能保证项目进度还能优化你的设计。有些开发者会说,写单元测试代码太费劲了,比写业务代码还麻烦。可是如果强迫开发者必须写单元测试代码的时候。聪明且又想‘偷懒’的开发人员为了将来可以更方便地编写测试代码。唯一的办法就是通过优化设计,尽可能得将业务代码设计成更容易测试的代码。慢慢地开发者就会发现。自己设计的程序耦合度也越来越低。每个单元程序的输入输出,业务内容和异常情况都会尽可能变得简单。最后发现自己的编程习惯和设计能力也越来越老练了。

创新互联主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、成都全网营销、网站程序开发、HTML5响应式成都网站建设手机网站制作设计、微商城、网站托管及成都网站维护公司、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为成都加固行业客户提供了网站营销推广服务。

其实容易测试的代码基本上可以和设计良好的代码划等号。因为一个单元测试用例其实就是一个单元的最早用户。容易使用显然意味着良好的设计。

有着良好设计的项目一直是很注重代码重用的。代码重用的好处在这里就不多说了。但是要做到代码重用首先要保证被重用的单元程序必须是个非常优秀的程序,除了良好的设计,还要有详细的文档。另外最重要的其实是单元测试代码。不知道大家有没有这样的经历?当大家不清楚一个API 函数如何使用而去寻找文档的帮助时,往往会跳过大段的英文说明而去直接看文档中提供的样例程序,然后在自己的程序中依葫芦画瓢调用这个函数。那么,您有没有意识到,被重用的代码如果有了单元测试代码。你的测试代码就可以成为这个函数最好的API 了。

单元测试代码还可以通过简单的事务回滚功能在生产环境上做基于真实数据的测试而不用担心会产生不必要的数据。利用这样的测试代码我们可以在发布程序后check 刚才的发布是否成功。以往发布的时候我们经常会碰到一种比较尴尬的情况,当我们将程序发布到正式环境上后,我们每个人心里一直还是有点后顾之忧。因为我们不能在正式环境上运行我们的程序,只能被动地等待客户操作过后才知道发布的程序是否正常。这种情况让我们非常被动,如果运气好可能不出什么问题,可是一旦客户在正式环境上发现报了个系统异常之类的错误或者出现错误数据,那就后果很严重了,这将影响到产品的声誉,显然这样也是很没面子事。如果我们运行过单元测试代码,万一有问题我们就可以主动的发现并且修改后重新发布。

什么叫android单元测试

从名字上看,单元测试是为了测试某一个代码单元而写的测试代码。但是什么叫“一个代码单元”呢?是一个模块、还是一个类、还是一个方法(函数)呢?不同的人、不同的语言,都有不同的理解。一般的定义,尤其是是在OOP领域,是一个类的一个方法。在此,我们也这样理解:单元测试,是为了测试某一个类的某一个方法能否正常工作,而写的测试代码。

Android Mock 单元测试

Mock 用来干什么的?

首先我们知道 单元测试需要测试对象高度内聚,而我们在开发中无法避免需要用到其他对象,这些对象可能又引用到另一些对象,这样测试起来极其困难。

Mock 可以将这些依赖的对象虚拟化,我们不必创建一个真是的对象就可以进行调用测试,实现了封闭测试。

引入方式:

举个例子来说明吧

我们实现一个简单的 mvp 架构 ,实现的功能是 添加数据和删除数据

主要对 presenter 来进行测试

可以看到 我们要想测试 presenter 是否正常运行,需要两个依赖,一个是 数据的实体操作 repository 和 结果返回的接收实体 view

好我们创建 测试类

我们以 add 方法为例编写测试

我们在声明部分先声明需要依赖的对象,并初始化。

对应测试用例编写测试方法

执行测试对象的相应方法,检测预期对象的方法是否调用

引用的依赖对象采用同样的方法进行单元测试,保证功能调用的正常

Android怎样进行单元测试

这里我们拿“android的ScrollView滚动布局获取数据基础方法”这个示例中利用HttpUtils工具类获得json数据为例,利用单元测试进行测试。

首先,在AndroidManifest.xml清单文件中使用鼠标点击的方法添加android.test.InstrumentationTestRunner(如果使用代码容易出错),之后再添加Instrumentation的Name和Target package,全部自动完成这一过程。具体方法如图。

然后在AndroidManifest中使用Alt+/自动添加单元测试包,单元测试准备工作完成,方法如图。

在第二步中targetPackage指定的包名com.example.layout,意思是在com.example.layout包下所有包下的类都可以进行单元测试,所以我们在该包下建立一个测试类MyTest,并继承AndroidTestCase,写一个testjson()方法,用于测试android语句是否能正确输出json数据,具体代码如下。

4

写好测试代码之后,进行如图方式执行测试代码。如果出现“绿色”,则测试成功,这样就完成了单元测试,模拟器只需要在旁边挂着,不用模拟器,而可以进行多个函数的独立单元测试,不仅节省了时间,还提高了工作效率。

android什么叫单元测试

单元测试是参与项目开发的工程师在项目代码之外建立的白盒测试工程,用于执行项目中的目标函数并验证其状态或者结果,其中,单元指的是测试的最小模块,通常指函数。如图1所示的绿色文件夹即是单元测试工程。这些代码能够检测目标代码的正确性,打包时单元测试的代码不会被编译进入APK中。

处于高速迭代开发中的Android项目往往需要除黑盒测试外更加可靠的质量保障,这正是单元测试的用武之地。单元测试周期性对项目进行函数级别的测试,在良好的覆盖率下,能够持续维护代码逻辑,从而支持项目从容应对快速的版本更新。

如何进行Android单元测试

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

很多的文章指导你应该在“build.gradle” 文件里面添加几行代码从而允许单元测试,并且告诉你应该在项目依赖中添加Android测试库。

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

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

注意:还有好几种广受欢迎的Android单元测试框架,比如Robolectric,它们比我在这里提到的需要更多的配置,我希望在未来可以以这个题目再写一些指导文章。

创建你的单元测试文件夹

我喜欢把单元测试放在我的主项目里面,比如“com.mypath.tests.” ,你可以把测试目录放到你想要的地方。开始之前,像下面这样,先创建你的测试文件夹。(译者注:这一步不是必须的,你也可以把单元测试类创建在与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);

}

}1234567

注意:所有的测试方法必须以”test”开头,这样Android Studio才能自动的找到所有你想要进行单元测试的方法。

为你的项目配置单元测试

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

首先点击”Run- Edit Configurations”

然后点击“+”从左边弹出的列表里,选择添加一个 Android Tests,然后你可以在右上角给它改名为你想要的名字。

然后就会创建一下像下面这样的测试项目配置

从下拉菜单中选择你当前的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”1

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


本文标题:单元测试android,单元测试中设计测试用例的依据是
本文URL:http://cdweb.net/article/dsdhogh.html