Подтвердить что ты не робот

Можно ли определить "Активность" в проекте тестирования Android и запустить тест против него?

Я пишу тесты для компонента в своем приложении для Android. Этот компонент использует действия для создания некоторых отчетов. Поэтому мне нужно выполнить операцию, чтобы протестировать компонент (уродливую архитектуру), и я подумал, что было бы легко создать фиктивную активность внутри тестового проекта, а не создавать тесты, унаследованные от ActivityInstrumentationTestCase2<TestActivity>, но по какой-то причине я всегда получаю java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.xxx/.Testctivity } исключение.

В файл манифеста добавляется тестовая активность, и пакет кажется корректным.

Я попытался поместить его в пакет com.xxx(пакет приложения) и com.xxx.test, без везения. Но когда я переношу TestActivity в целевое приложение, все работает нормально. Поэтому я начал задаваться вопросом, в чем разница между тестовым проектом и моим приложением, и даже возможно иметь действия внутри тестовых проектов.

4b9b3361

Ответ 1

Да, это возможно, но не рекомендуется, поскольку оно указано в официальном руководстве :

Как только вы создали тестовый проект, вы заполняете его тестовым пакетом. Этот пакет не требует действия, хотя вы можете определить его, если хотите. Хотя ваш тестовый пакет может сочетать классы активности, классы тестов или обычные классы, ваш основной тестовый пример должен расширить один из классов тестовых случаев Android или классов JUnit, поскольку они обеспечивают наилучшие возможности тестирования.

Для этого вам необходимо:

  • Определите свою фиктивную активность в тестовом проекте AndroidManifest.xml.
  • Измените контрольную точку TargetPackage на себя в Test Проект AndroidManifest.xml. (испытуемый класс активности должен под контрольным пакетом TargetPackage).

Предположим, что у меня есть тестовый проект. com.example.test содержит два класса DummyActivity и DummyActivityTest, тогда, если вы хотите протестировать DummyActivity с помощью DummyActivityTest, вам необходимо определить ваш тестовый проект AndroidManifest.xml следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test"
    android:versionCode="1"
    android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<!-- targetPackage point to test project itself -->
<instrumentation
    android:name="android.test.InstrumentationTestRunner"
    android:targetPackage="com.example.test" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <uses-library android:name="android.test.runner" />
    <activity
        android:name=".DummyActivity"
        android:label="@string/app_name" >
    </activity>
</application>

Ответ 2

Проект и активность проекта могут сосуществовать вместе, поставить имя целевого пакета в качестве имени пакета тестового проекта