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

我已经阅读了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. typora背景变黑
  2. go 通过nginx代理后获取用户ip
  3. 【数据挖掘】贝叶斯信念网络 ( 马尔科夫假设 | 结构 | 有向无环图 | 参数 | 条件概率表 | 案例分析 )
  4. 机器学习-集成之AdaBoost算法原理及实战
  5. 使用@Autowired注解警告Field injection is not recommended
  6. gevent版TCP服务器
  7. 墨天轮2022年新春发布会暨年度数据库颁奖盛典即将开启!
  8. 没能 PK 掉 WiFi 的 Li-Fi,可能是 5G 请来的救兵
  9. 洛谷 P1312 Mayan游戏
  10. Fastjson blacklist
  11. 萤火虫小程序_成都以北2h的森林小镇!养在深闺的萤火虫、穿行山间的火车,在这露营解锁夏天的小秘密...
  12. PageHelper.startPage不生效,失效问题
  13. 牛客假日团队赛6 F:Mud Puddles
  14. Mac屏保不生效问题的解决
  15. Git上修改分支名称
  16. windows系统“双击”的键盘快捷键是什么
  17. C#网络爬虫(获取需要登录的网站数据)
  18. uniapp一张图片在另一张图片上面
  19. 主板噪音测试软件,E1通过刷主板BIOS方法,给风扇降低噪音
  20. 计算机网络谢希仁第七版知识点总结

热门文章

  1. java的程序控制关键字_Java编程的关键字有哪些
  2. go任务调度2(linux的cron调用)
  3. A站没落了,付费会员成B站破解盈利难题的最优解?
  4. celery+rabbitmq+redis 分布任务队列探索(一)
  5. oracle 查询月份
  6. ci源码解析之CodeIgniter.php
  7. Linux内核中的信号量解析
  8. 模式实例之——中介者实例
  9. 小乌龟解决反向线上代码冲突
  10. eclipse 中 project facet 的作用