【问题标题】:Are there problems with ActivityInstrumentationTestCase2 in Android 2.1?Android 2.1 中的 ActivityInstrumentationTestCase2 有问题吗?
【发布时间】:2010-10-18 08:53:27
【问题描述】:

在我为我的 android 应用程序设置了所有单元测试用例之后,我现在还想做功能测试。但我遇到了一个问题。当我为 HTC Legend 开发时,我现在只能使用最高 2.1 的 android 平台。但在某种程度上,ActivityInstrumentationTestCase2 似乎不起作用。

public SupplierSelectoinTest() {
    super("com.sap.catalogue.activities", SupplierSelection.class);
}

当我尝试运行测试时,这段简单的代码给了我以下错误:

java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.sap.catalogue.activities/com.sap.catalogue.activities.SupplierSelection }
at android.app.Instrumentation.startActivitySync(Instrumentation.java:371)
at android.test.InstrumentationTestCase.launchActivityWithIntent(InstrumentationTestCase.java:120)
at android.test.InstrumentationTestCase.launchActivity(InstrumentationTestCase.java:98)
at android.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:87)
at com.sap.catalogue.test.acceptance.SupplierSelectoinTest.setUp(SupplierSelectoinTest.java:27)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:430)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)

我通读了所有教程,我从中得到的只是,它应该可以工作,但它没有。无论如何,当我切换到 android 2.2(目前还没有解决方案)并使用新的构造函数时,我只需要提交活动类而不是 pkg 字符串,模拟器将运行测试而不会抱怨。

但必须有办法让它在 android 2.1 中运行!

另外 这是我的两个 Manifest.xml 文件。第一个是应用程序本身。另一个是测试项目的一个。

应用程序清单.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.sap.catalogue"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Catalogue"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    <activity android:name=".activities.CategoryBrowser"></activity>

<activity android:name=".activities.ProductDetails"></activity>
<activity android:name=".activities.ProductSearch"></activity>
<activity android:name=".activities.ProductView"></activity>
<activity android:name=".activities.SupplierSelection"></activity>

</application>
    <uses-sdk android:minSdkVersion="7" />

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest> 

测试清单.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.sap.catalogue.test"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">

    <uses-library android:name="android.test.runner" />
    </application>
    <uses-sdk android:minSdkVersion="7" />
    <instrumentation android:targetPackage="com.sap.catalogue" android:name="android.test.InstrumentationTestRunner" />

</manifest> 

【问题讨论】:

    标签: android testing functional-testing


    【解决方案1】:

    使用顶级包名。

    public SupplierSelectoinTest() {
        super("com.sap.catalogue", SupplierSelection.class);
    }
    

    【讨论】:

      【解决方案2】:

      很可能,您没有在 Manifest.xml 中编写活动。你也分享一下吗?

      编辑:

      将此添加到测试 Manifest.xml。我想,这会解决你的问题。

      <activity android:name="com.sap.catalogue.activities.SupplierSelection"></activity>
      

      【讨论】:

      • 你指的是哪一个?测试项目或应用程序本身的 Manifest.xml?
      • 不幸的是它没有。即使 Manifest.xml 中有这一行,它也会给我完全相同的错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多