
我试图使用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 – 活动单元测试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)