我目前正在对图书馆进行单元测试.在某些类中,我需要在一些静态方法中将活动作为参数传递.图书馆本身不包含任何活动.我需要以某种方式获取模拟活动的实例,以便在每个单独的方法测试中使用.

我已经阅读了Activity Testing Tutorial和Testing Fundamentals部分.如果你要测试已经存在于待测试项目中的活动,那么大多数说法都是有意义的.但我只需要一个模拟的东西来做一些事情,比如在Ui线程中显示对话框和运行短任务.

实现这一目标的最快,最简单的方法是什么?我应该在我的测试项目中创建模拟活动,还为虚拟UI提供xml布局资源?

UPDATE

由于我没有找到任何自动创建模拟活动的方法,所以我决定自己提供.我在测试项目中创建了一个虚拟活动,什么都不做,并通过xml提供了一个虚拟布局.然后我编写了我的测试扩展ActivityInstrumentationTestCase2:

public class LibraryTest extends ActivityInstrumentationTestCase2 {

public LibraryTest(String name) {

super(MockActivity.class);

}

protected void setUp() throws Exception {

super.setUp();

}

public void testAMethodFromLibrary() {

fail("Not yet implemented");

}

}

MockActivity是我在此测试项目中创建的上述模拟活动.但是,似乎Android测试框架在启动活动时遇到问题,并且它出现了这个异常:

java.lang.RuntimeException: Exception during suite construction

at android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:239)

at java.lang.reflect.Method.invokeNative(Native Method)

at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)

at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)

at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520)

at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)

Caused by: java.lang.NullPointerException: Method name must not be null.

at java.lang.ClassCache.findMethodByName(ClassCache.java:297)

at java.lang.Class.getMethod(Class.java:985)

at android.test.suitebuilder.TestMethod.getAnnotation(TestMethod.java:60)

at android.test.suitebuilder.annotation.HasMethodAnnotation.apply(HasMethodAnnotation.java:39)

at android.test.suitebuilder.annotation.HasMethodAnnotation.apply(HasMethodAnnotation.java:30)

at com.android.internal.util.Predicates$OrPredicate.apply(Predicates.java:106)

at android.test.suitebuilder.annotation.HasAnnotation.apply(HasAnnotation.java:42)

at android.test.suitebuilder.annotation.HasAnnotation.apply(HasAnnotation.java:31)

at com.android.internal.util.Predicates$NotPredicate.apply(Predicates.java:122)

at android.test.suitebuilder.TestSuiteBuilder.satisfiesAllPredicates(TestSuiteBuilder.java:254)

at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:190)

at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:373)

at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4218)

at android.app.ActivityThread.access$3000(ActivityThread.java:125)

at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071)

at android.os.Handler.dispatchMessage(Handler.java:99)

at android.os.Looper.loop(Looper.java:123)

at android.app.ActivityThread.main(ActivityThread.java:4627)

at java.lang.reflect.Method.invokeNative(Native Method)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

at dalvik.system.NativeStart.main(Native Method)

现在我完全迷失在这里.怎么会这么复杂?我选择了正确的方法吗?我只想在测试方法中启动一个对话框.也许框架搞乱了,因为要测试的活动不在目标项目中?

这里的任何帮助将不胜感激.我已经没时间了,如果找不到合适的方法,我必须使用我的库创建第二个项目,在那里移动模拟活动并从测试项目中进行测试.这是很多代码,因为我必须在(现在不是通用的)模拟活动中包含一个方法来调用我想要测试的每个库方法.

android activity 测试,android – 最快的方法来创建一个模拟Activity来进行测试相关推荐

  1. android compile使用方法,自己创建一个android studio在线依赖compile

    相信大家在使用AS(android studio)的时候添加依赖的时候有没见过如下方式: 很酷炫本人将教你如何做到. 1.    使用 jcenter()实现- 在创建的时候as自动帮我导入了 1.  ...

  2. 使用Thread类和Runnable方法来创建一个线程的区别

    第一:Thread类需要被继承,然后重写run()方法,但是Java中的类是单继承的,也就是说,若某个类继承Thread获取线程功能后,就不能再继承别的类了.但是Runnable接口解决了这个问题,某 ...

  3. 2023年副业赚钱最快的方法,最后一个时代红利,你一定要抓住!

    你有没有发现,生活中大部分的烦恼,归根结底只有一个原因--没钱. 守着几千块的死工资,升职加薪难上加难,平时要为了省十几块钱不舍得打车; 跟老公三天两头吵架,原因不过就是家里没钱给孩子报学费高昂的兴趣 ...

  4. java新建测试程序_java – 如何创建一个CloseableHttpResponse对象来帮助测试?

    我正在尝试构建一个 CloseableHttpResponse模拟对象,以在我的单元测试中返回,但是没有构造函数.我发现这个 DefaultHttpResponseFactory,但它只是一个Http ...

  5. android 自动重启测试,检测Android系统重启并生成测试用例的方法与流程

    本发明涉及软件技术领域,特别是一种检测Android系统重启并生成测试用例的方法. 背景技术: 目前安卓智能设备的功能越来越多,例如安卓智能电视或安卓智能盒子等,而在不同功能间交叉操作有概率触发And ...

  6. 【Android 多媒体开发】 MediaPlayer 状态机 接口 方法 解析

    作者 : 韩曙亮 转载请著名出处 :  http://blog.csdn.net/shulianghan/article/details/38487967 一. MediaPlayer 状态机 介绍 ...

  7. android fota解决方案,Android智能终端FOTA方案的制作方法

    技术特征: 1.android智能终端fota方案发明专利权利要求 1.一种智能终端连续增量升级实现方法. 2.其特征在于所有任何终端设备可以一次性增量升级到最新版本,也可以对部分版本一次性增量升级到 ...

  8. Android 学习 之 Android 4.0 平台

    [size=large]转转转,感谢饿哦额Android的各位大侠,在这里谢过,我这里做个备份,嘿嘿!! http://www.eoeandroid.com/thread-103300-1-1.htm ...

  9. android studio创建一个类继承application_带你全方位了解Android中的Context

    这道题想考察什么? 是否熟悉Context类结构 是否熟悉Application,Activity,Service和Context的依赖关系 Application,Activity,Service中 ...

  10. Android训练课程(Android Training) - 高效的显示图片

    高效的显示图片(Displaying BitmapsEfficiently) 了解如何使用通用的技术来处理和读取位图对象,让您的用户界面(UI)组件是可响应的,并避免超过你的应用程序内存限制的方式.如 ...

最新文章

  1. textaligncenter仍然不居中_戊唑醇和己唑醇都是杀菌剂,有啥不同?真正懂的人不多...
  2. android sharesdk分享功能,Android ShareSDK快速实现分享功能
  3. C++中如何读取一个数的位数_C语言编写程序求水仙花数
  4. 论文浅尝 - CIKM2021 | DT-GCN: 一种双曲空间中的数据类型感知的知识图谱表示学习模型...
  5. 为什么iPhone 11在中国市场需求较美国强劲?真相扎心...
  6. group by 用法解析_GRE数学专项练习及解析概率
  7. 前端web:响应式网站开发的现状你了解吗?
  8. 孙鑫VC学习笔记:第十一讲 (三) 如何把元文件保存到文件当中
  9. Tomcat整体架构分析
  10. c语言大学生信息管理系统实验报告,c语言学生信息管理系统实训报告
  11. kuangbin专题-平整数组
  12. 【windows10】 CH340/CH341 USB转串口驱动安装
  13. mac mysql dmg_在mac下使用DMG安装Mysql
  14. 智慧(灯杆)路灯系统集成解决方案详解
  15. 软件测试面试题和简历模板(面试前准备篇)
  16. CTC Loss和Focal CTC Loss
  17. Scratch www 系统搭建
  18. 如何写出让同事吐血的代码?
  19. nmon analyser 使用中报错“宏”不可用的问题及处理
  20. Flan Scan:Cloudflare开源轻量级网络漏洞扫描软件

热门文章

  1. 程序员必知的Python陷阱与缺陷列表
  2. 逼死强迫症?聊聊应用推送角标的那些事儿
  3. wamp环境单独安装(windows下apache2.4、mysql5.5、php5.5的版本)
  4. Day10(--JSP与JSP内置对象)
  5. 全球排名前50网站使用的开发语言及系统平台
  6. 驱动lx4f120h,头文件配置,没有完全吃透,望指点
  7. 2006年最值得期待的十种技术
  8. Myeclipse破解后报错解决
  9. Microsoft word 表格居中对齐方法
  10. 《JavaScript忍者秘籍》——2.4 测试套件基础知识