android – 活动单元测试

android – 活动单元测试,第1张

概述我有一个活动,它在后台执行一些工作,并根据这项工作的结果开始另外两个活动之一.如何编写单元测试来验证其行为? 我试图使用ActivityUnitTestCase,但它试图显示进度对话框.使用ActivityInstrumentationTestCase2我找不到任何方法来拦截活动破坏.有什么建议吗? ActivityInstrumentationTestCase2是正确的方法,因为不推荐使用其他类 我有一个活动,它在后台执行一些工作,并根据这项工作的结果开始另外两个活动之一.如何编写单元测试来验证其行为?

我试图使用ActivityUnitTestCase,但它试图显示进度对话框.使用ActivityInstrumentationTestCase2我找不到任何方法来拦截活动破坏.有什么建议吗?

解决方法 ActivityInstrumentationTestCase2是正确的方法,因为不推荐使用其他类.要测试主Activity之后发生了什么,让我们称之为ProgressActivity,你应该使用 ActivityMonitor.我认为你想拦截Activity创建,而不是破坏.

我在这里假设在一些计算在后台完成后,ProgressActivity启动另一个Activity(比方说A1,A2或A3).

您的测试用例应该是这样的:

public static final HashSet<Class<? extends Activity>> TARGET_ACTIVITIES = new HashSet<Class<? extends Activity>>();static {    TARGET_ACTIVITIES.add(A1.class);    TARGET_ACTIVITIES.add(A2.class);    TARGET_ACTIVITIES.add(A3.class);}private static final int TIMEOUT = 7000;public voID testRandomActivityStarted() {    @SuppressWarnings("unused")    ProgressActivity activity = getActivity();    final Instrumentation inst = getInstrumentation();    IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MAIN);    intentFilter.addcategory("MY_category");    ActivityMonitor monitor = inst.addMonitor(intentFilter,null,false);    // Wait,before the Activity started    monitor.waitForActivityWithTimeout(TIMEOUT);    assertEquals(1,monitor.getHits());    Activity randomActivity = monitor.getLastActivity();    Log.d(TAG,"monitor=" + monitor + "   activity=" + randomActivity);    // Unfortunately,it seems randomActivity is always null even after a match    if ( randomActivity != null ) {        assertTrue(TARGET_ACTIVITIES.contains(randomActivity.getClass()));    }    inst.removeMonitor(monitor);}

这里的诀窍是在IntentFilter中使用一个类别,因为如果你依赖于getLastActivity(),你可能会感到失望,因为它似乎总是为空.为了能够匹配此类别,您应该在启动A1,A2或A3时使用它(Intent.addCatrgory())

这个例子改编自0700年ActivityMonitor的例子.

总结

以上是内存溢出为你收集整理的android – 活动单元测试全部内容,希望文章能够帮你解决android – 活动单元测试所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1128536.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存