java– 在Android中运行单元测试时,Intent解析为不同的进程

java– 在Android中运行单元测试时,Intent解析为不同的进程,第1张

概述我有一个使用两个活动的小应用程序.这两个活动都继承自MapActivity并显示地图(com.google.android.maps).自Android谷歌地图文档说OnlyoneMapActivityissupportedperprocess.MultipleMapActivitiesrunningsimultaneouslyarelikelytointerfereinunexpect

我有一个使用两个活动的小应用程序.这两个活动都继承自MapActivity并显示地图(com.Google.android.maps).

自Android谷歌地图文档说

Only one MapActivity is supported per
process. Multiple MapActivitIEs
running simultaneously are likely to
interfere in unexpected and undesired
ways.

我修改了我的清单,在两个不同的进程运行这两个活动(我删除了一些行以使其缩短):

<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"package="com.example.myapp"><uses-permission androID:name="androID.permission.ACCESS_FINE_LOCATION" /><uses-permission androID:name="androID.permission.ACCESS_COARSE_LOCATION" /><uses-permission androID:name="androID.permission.INTERNET" /><application    androID:icon="@drawable/icon"    androID:label="@string/app_name"    androID:theme="@androID:style/theme.light">    <uses-library androID:name="com.Google.androID.maps" />    <activity         androID:name=".Activity1"        androID:process=".Activity1">        <intent-filter>            <action androID:name="androID.intent.action.MAIN" />            <category androID:name="androID.intent.category.LAUNCHER" />        </intent-filter>Unit    </activity>    <activity        androID:name=".Activity2"        androID:process=".Activity2">        <intent-filter>            <action androID:name="androID.intent.action.MAIN" />            <category androID:name="androID.intent.category.DEFAulT" />        </intent-filter>    </activity></application><uses-sdk androID:minSdkVersion="8" /></manifest> 

现在应用程序运行正常,但是当我在两个活动上运行单元测试时,我遇到了问题.
例如:

package com.example.myapp;public class Activity1Test extends ActivityInstrumentationTestCase2<Activity1> {    Activity1 mActivity;    public Activity1test() {        super("com.example.myapp.Activity1", Activity1.class);    }    @OverrIDe     protected voID setUp() throws Exception {        super.setUp();        setActivityInitialtouchMode(false);        setActivityIntent(new Intent());        mActivity = getActivity();  //An exception is thrown at this line    }}

当我调用getActivity()方法时抛出异常:

java.lang.RuntimeException: Intent in process com.example.myapp resolved to different process .Activity1: Intent { flg=0x10000000 cmp=com.example.myapp/.Activity1 }at androID.app.Instrumentation.startActivitySync(Instrumentation.java:377)at androID.test.InstrumentationTestCase.launchActivityWithIntent(InstrumentationTestCase.java:119)at androID.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:100)at com.example.myapp.Activity1Test.setUp(Activity1Test.java:28)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)

有没有办法让单元测试“解决”正确的过程?

解决方法:

Instrumentation在同一进程中运行所有应用程序组件.

总结

以上是内存溢出为你收集整理的java – 在Android中运行单元测试时,Intent解析为不同的进程全部内容,希望文章能够帮你解决java – 在Android中运行单元测试时,Intent解析为不同的进程所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存