Есть ли проблемы с ActivityInstrumentationTestCase2 в Android 2.1? - PullRequest
2 голосов
/ 18 октября 2010

После того, как я настроил все примеры модульных тестов для своего приложения для Android, теперь я также хочу провести функциональное тестирование.Но я допускаю одну проблему.Поскольку я занимаюсь разработкой HTC Legend, я могу использовать только платформы Android до 2.1.Но в некотором смысле кажется, что 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.Первый - это само приложение.Другой - один из тестового проекта.

Application Manifest.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> 

Test 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> 

Ответы [ 2 ]

6 голосов
/ 02 ноября 2010

Используйте имя пакета верхнего уровня.

public SupplierSelectoinTest() {
    super("com.sap.catalogue", SupplierSelection.class);
}
0 голосов
/ 18 октября 2010

Скорее всего, вы не записали действие в Manifest.xml. Вы бы тоже поделились этим?

Редактировать:

Добавьте это в тест Manifest.xml. Я думаю, это решит вашу проблему.

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