以下为本人在AndroidStudio 2.0 上实测后得出的结论,不像网上那一堆堆的误人子弟的文章,都是过时的或者根本就是不对的。

简介

和eclipse需要配置清单文件不同,AndroidStudio自带的单元测试功能是不需要修改AndroidManifest.xml或gradle文件的,直接编写测试用例即可。

使用AS新建一个工程时,在src目录下会自动创建三个目录:

mian目录下为项目代码,androidTest目录下为编写Android测试用例使用,test目录下为编写Java测试用例使用。

gradle文件默认也已配置【testCompile 'junit:junit:4.12'】


Java测试用例

默认test目录下有一个现成的ExampleUnitTest类,我们稍加修改
  1. /**
  2. * To work on unit tests, switch the Test Artifact in the Build Variants view.
  3. */
  4. public class ExampleUnitTest {
  5. @Test
  6. public void addition_isCorrect() throws Exception {
  7. int sum = 2 + 2;
  8. System.out.println("结果为:" + sum);
  9. assertEquals(4, sum);
  10. }
  11. }
打开测试用例类,切换到Structure面板,鼠标选中要测的方法,右键–Run [方法名],即可进行Java用例测试。


如果运行结果正确,Run面板会是绿色的

否则是红色的,比如我们将其中一行代码修改为
assertEquals(5, 2 + 2);

我们也可以添加自己的测试类或测试方法,只不过我们的测试方法上要满足以下条件
  • 方法要为【public】访问权限
  • 要添加【@org.junit.Test】的注解
  • 方法不能带参数(因为你没办法传递参数啊)

Android测试用例

同样,默认androidTest目录下有一个现成的ApplicationTest类,我们稍加修改
  1. /**
  2. * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
  3. */
  4. public class ApplicationTest extends ApplicationTestCase<Application> {
  5. public ApplicationTest() {
  6. super(Application.class);
  7. }
  8. //方法名必须以test开头,并且方法不能带参数
  9. public void testSimple() {
  10. int width = getScreenWidth(getContext());
  11. Log.i("bqt", "屏幕宽:" + width);
  12. Toast.makeText(getContext(), "屏幕宽:" + width, Toast.LENGTH_SHORT).show();
  13. //assertEquals(4, 2 + 2);//可以没有声明语句
  14. }
  15. /**
  16. * 获取屏幕宽
  17. */
  18. private int getScreenWidth(Context context) {
  19. DisplayMetrics metric = new DisplayMetrics();
  20. ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(metric);
  21. return metric.widthPixels;
  22. }
  23. }
运行后

并且可以生成与运行环境(即Context)有关的日志(这才是最重要的用途,我们可以在不运行APP的情况下获取App所有数据)

不过,很遗憾,我们不能直接操作UI(吐司没有弹出来)

我们的测试方法上要满足以下条件
  • 方法要为【public】访问权限
  • 所有的测试方法必须以test作为前缀(上面的Java测试用例是要求有@Test的注解)
  • 方法不能带参数(因为你没办法传递参数啊)
不过很奇怪的是,ApplicationTestCase类提示过时了,但是又没提示用哪个替换……而且这是你自动帮我生成的呀……

AS 进行单元测试的更多相关文章

  1. Intellij idea添加单元测试工具

    1.idea 版本是14.0.0 ,默认带有Junit,但是不能自动生成单元测试,需要下载JunitGererator2.0插件 2.Settings -Plugins,下载 JunitGenerat ...

  2. Python的单元测试(二)

    title: Python的单元测试(二) date: 2015-03-04 19:08:20 categories: Python tags: [Python,单元测试] --- 在Python的单 ...

  3. Python的单元测试(一)

    title: Python的单元测试(一) author: 青南 date: 2015-02-27 22:50:47 categories: Python tags: [Python,单元测试] -- ...

  4. javascript单元测试框架mochajs详解

    关于单元测试的想法 对于一些比较重要的项目,每次更新代码之后总是要自己测好久,担心一旦上线出了问题影响的服务太多,此时就希望能有一个比较规范的测试流程.在github上看到牛逼的javascript开 ...

  5. 使用NUnit为游戏项目编写高质量单元测试的思考

    0x00 单元测试Pro & Con 最近尝试在我参与的游戏项目中引入TDD(测试驱动开发)的开发模式,因此单元测试便变得十分必要.这篇博客就来聊一聊这段时间的感悟和想法.由于游戏开发和传统软 ...

  6. 我这么玩Web Api(二):数据验证,全局数据验证与单元测试

    目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试   一.模型状态 - ModelState 我理解 ...

  7. ABAP单元测试最佳实践

    本文包含了我在开发项目中经历过的实用的ABAP单元测试指导方针.我把它们安排成为问答的风格,欢迎任何人添加更多的Q&A's,以完成这个列表. 在我的项目中,只使用传统的ABAP report. ...

  8. python_单元测试unittest

    Python自带一个单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 步骤1:首先引入unittest模块--import un ...

  9. .Net中的AOP系列之《单元测试切面》

    返回<.Net中的AOP>系列学习总目录 本篇目录 使用NUnit编写测试 编写和运行NUnit测试 切面的测试策略 Castle DynamicProxy测试 测试一个拦截器 注入依赖 ...

  10. React单元测试——十八般兵器齐上阵,环境构建篇

    一个完整.优秀的项目往往离不开单元测试的环节,就 github 上的主流前端项目而言,基本都有相应的单元测试模块. 就 React 的项目来说,一套完整的单元测试能在在后续迭代更新中回归错误时候给与警 ...

随机推荐

  1. UFLDL实验报告2:Sparse Autoencoder

    Sparse Autoencoder稀疏自编码器实验报告 1.Sparse Autoencoder稀疏自编码器实验描述 自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值, ...

  2. WSGI规格说明书

    PEP 333 这应该是WSGI最权威的文档了  http://www.python.org/dev/peps/pep-3333/  值翻译了最重要的前面部分,后面读者可以参考 当然文档有些生硬,欢迎 ...

  3. BZOJ 3107 二进制a+b

    Description 输入三个整数\(a, b, c\),把它们写成无前导\(0\)的二进制整数.比如\(a=7, b=6, c=9\),写成二进制为\(a=111, b=110, c=1001\) ...

  4. A Statistical View of Deep Learning (II): Auto-encoders and Free Energy

    A Statistical View of Deep Learning (II): Auto-encoders and Free Energy With the success of discrimi ...

  5. 大众点评试水O2O新模式:实体店试穿,扫描二维码付款 现场取货

    在餐饮美食行业取得不错的成绩之后,大众点评将触角延伸到了线下的传统商铺,开始涉足线下商品的 O2O 团购.和传统的线上下单,线下消费的 O2O 模式不同.大众点评的 O2O 团购用户,可在店内试穿后通 ...

  6. Android 批量上传sd卡图片

    最近手头上需要批量上传一些保存到SD卡图片由于简单,过于忘记,写在博客中吧!同时也希望能帮到大家! 一 . 以下是一个Service类 package cn.com.service; import j ...

  7. ReiserFS与EXT3的比较

    ReiserFS与EXT3的比较 最近,我刚从ReiserFS文件系统转到了ext3日志文件系统.我是一个ReiserFS的忠实追随者,并且直到现在我也没有改变我对该文件系统的看法.我之所以转而使用e ...

  8. svn图形客户端:smartsvn,svnmanager,rapidsvn,svnworkbench,rabbitsvn,Esvn, trac

    svn图形客户端: smartsvn,http://www.oschina.net/p/smartsvn, 不用安装直接运行 qsvn, http://www.oschina.net/p/qsvn r ...

  9. FFT(快速傅里叶变换):UVAoj 12298 - Super Poker II

    题目:就是现在有一堆扑克里面的牌有无数张, 每种合数的牌有4中不同花色各一张(0, 1都不是合数), 没有质数或者大小是0或者1的牌现在这堆牌中缺失了其中的 c 张牌, 告诉你a, b, c接下来c张 ...

  10. Sublime Text 3安装与使用 Package Control 插件安装

    原文地址:http://www.cnblogs.com/zhcncn/p/4113589.html 本文是Sublime Text 全程指引 by Lucida (http://www.cnblogs ...