上海网站开发建设价格,企业网站建设好处,品牌建设评价,凡客精选转载请标明出处#xff1a;一片枫叶的专栏 上一篇文章中我们讲解了webview中问题集锦#xff0c;讲解了webview的性能优化、webview种入Cookie信息、activity退出的时候清除webview信息报错、如何通过java代码和js代码相互交互、webview如何下载文件以及腾讯的X5浏览服务等知… 转载请标明出处一片枫叶的专栏 上一篇文章中我们讲解了webview中问题集锦讲解了webview的性能优化、webview种入Cookie信息、activity退出的时候清除webview信息报错、如何通过java代码和js代码相互交互、webview如何下载文件以及腾讯的X5浏览服务等知识这些都是我在使用webview中遇到的问题难点实践等更多关于这些问题的说明可以参考我的Android产品研发十八–webview趟过的坑 本文我们将讲解如何在Android studio中进行单元测试。在Android开发项目中经常会进行测试操作而一次又一次的运行模拟器浪费了大量时间降低了工作效率降低虽然最新的Android studio中提供了instance run功能来提高Android studio的编译速度但是我们还是需要了解Android studio的单元测试功能其可以很方便的为我们提供功能性测试所以如果项目中有用到测试数据的时候可以先进行单元测试如果可以正常输出数据了然后再到UI中执行这样会提高一些工作效率。 什么是单元测试 在讲解如何在Android studio中进行单元测试之前我们先普及一下基本知识即什么是单元测试这里我先引用一下百科中对单元测试的描述 是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义一般来说要根据实际情况去判定其具体含义如C语言中单元指一个函数Java里单元指一个类图形化的软件中可以指一个窗口或一个菜单等。总的来说单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。 简单来说单元测试就是将一个软件功能拆分成N个最小的不可拆分的单元功能点对着单元功能点的测试就是单元测试。 单元测试有什么作用 Android中的测试一般分为功能测试ui测试单元测试等等 由于app运行需要Android运行环境而我们的Android的单元测试一般无法提供运行环境所以一般像功能测试UI测试等都需要在模拟器或者是真机上进行但是一些功能性的需求不需要Android环境的功能如果也使用Android studio重新编译运行那么耗费的时间就太长了一般来说一个apk文件编译安装运行的时间一两分钟都是普遍的三四分钟也可能这样为了测试一个简单的功能就需要花费这么长的时间重新编译运行性价比太低。 因此单元测试主要是功能测试主要用于测试一些功能性的需求比如网络请求比如数据存储等等。 Android studio对单元测试的支持 新版的Android studio中添加了对单元测试的支持如图所示 该目录下编写测试用例即可。 单元测试可以测试那些内容 这里需要说明的是Android studio的单元测试由于只是模拟Android开发环境但是其不是真正的Android开发环境所以不能测试UI功能不能测试需要硬件支持的功能比如蓝牙wifi等不能测试App跳转等等那么其可以测试那些内容呢 测试一些数据性的功能比如加载网络数据 测试SharedPerferences测试数据库测试函数等 工具类的测试比如验证时间转化格式正则验证等等 简单的单元测试用例 我们来看一下测试用例的写法 /*** Instrumentation test, which will execute on an Android device.** see a hrefhttp://d.Android.com/tools/testingTesting documentation/a*/
MediumTest
RunWith(AndroidJUnit4.class)
public class ExampleInstrumentationTest {Testpublic void useAppContext() throws Exception {// Context of the app under test.Context appContext InstrumentationRegistry.getTargetContext();assertEquals(uuch.com.Android_activityanim, appContext.getPackageName());}
} 这是项目创建的默认的单元测试的类可以看到其和普通的Class类无太多的区别只是调用了相应的测试API而已下面我们就自定义一个自己的单元测试类。 编写自定义的测试用例类 实现测试用例方法/*** Created by aaron on 16/7/11.* 自定义的单元测试类*/MediumTest
RunWith(AndroidJUnit4.class)
public class MTest {Testpublic void test1() {// Context of the app under test.Context appContext InstrumentationRegistry.getTargetContext();assertEquals(uuch.com.Android_activityanim, appContext.getPackageName());Log.i(tag, $$$$$$$$$$$$);assertEquals(result:, 123, 100 33);}
} 需要注意的是 测试用例类需要使用注解MediumTest和RunWith(AndroidJUnit4.class) 我们所写的测试用例方法需要添加名称为Test的注解否则的话就找不到测试方法。 比如我们去掉注解Test的话 再次执行的话就找不到可执行的测试函数了。 还有一个问题可以发现我们的函数都是这是的public的如果我们设置我们的测试函数为private的货怎么样呢修改测试函数 /*** 单元测试测试函数*/
Testprivate void test2() {Log.i(tag, $$$$$$$$$$$$);assertEquals(result:, 123, 100 33);} 执行之后可以发现 报错了错误说明也很详细说的是我们的测试函数需要设置为Public的所以我们在编写测试函数的时候需要注意两点 测试函数需要为public 测试函数需要添加Test注解 如何执行测试用例 直接在源码中右键执行编写完成之后如何运行呢 可以选中需要测试的方法名称然后右击弹出操作提示框这是选择run 方法名就可以了这时候就可以执行该测试方法了。 测试用例里面为我们提供了测试过程中可能需要的系统环境对象 比如applicationcontext等等以后我们再次编写单元测试的时候是不是很方便了呢 Android studio菜单中执行测试用例选择runedit configuration 添加Android tests用例 配置tests方法 点击ok这时候run区域就已经出现了我们刚刚添加的测试用例了 一个简单的单元测试小例子 说了这么多我们还是举一个实力的开发例子吧。 情景 有这样的一种情况我们在开发过程中需要使用正则表达式验证一个字符串但是我们想在重新编译Apk之前验证一下这个正则表达式直接运行项目也可以打但是太慢了有什么简单的方式能够验证呢这时候就可以使用我们的单元测试了。 编码 /*** 单元测试测试函数*/
Testpublic void test2() {boolean result 18210741899.matches(\\d{11});Log.i(tag, #####: result);/*** 验证邮箱*/assertEquals(result:, result, true);} 执行这样我们就可以不启动我们的App就验证正则表达式的正确与否了。其中函数assertEquals为断言函数用于判断结果是否正确可以看到运行结果1 test passed说明我们的函数执行正确即result为true所以我们的正则表达式是正确的。 总结 这样我们经过一系列的操作之后就介绍完了Android studio中进行单元测试的步骤怎么样很简单吧O(∩_∩)O哈哈~ Android studio默认支持单元测试可以在module下的AndroidTest下编写测试用例 测试用例中提供了获取Context的API可以通过该方法获取Context对象 测试用例方法需要使用注解Test表明否则会报错找不到测试方法 测试方法需要定义为public否则报错 有两种执行测试方法的方式可以直接在源码中右键执行也可以在Android studio中配置测试方法 执行单元测试会重新执行apk的编译打包安装操作其优势是帮你免去了手动的打开某个页面执行某个操作的步骤。 另外对产品研发技术技巧实践方面感兴趣的同学可以参考我的Android产品研发一–实用开发规范Android产品研发二–启动页优化Android产品研发三–基类ActivityAndroid产品研发四–减小Apk大小Android产品研发五–多渠道打包Android产品研发六–Apk混淆Android产品研发七–Apk热修复Android产品研发八–App数据统计Android产品研发九–App网络传输协议Android产品研发十–不使用静态变量保存数据Android产品研发十一–应用内跳转scheme协议Android产品研发十二–App长连接实现Android产品研发十三–App轮训操作Android产品研发十四–App升级与更新Android产品研发十五–内存对象序列化Android产品研发十六–开发者选项Android产品研发十七–Hybrid开发Android产品研发十八–webview问题集锦 本文以同步至github中https://github.com/yipianfengye/AndroidProject欢迎star和follow --------------------- 作者一片枫叶_刘超 来源CSDN 原文https://blog.csdn.net/qq_23547831/article/details/51868451 版权声明本文为作者原创文章转载请附上博文链接