Модульное тестирование Android в Eclipse: «Не удалось запустить тест» - PullRequest
11 голосов
/ 01 апреля 2011

Я только начал пытаться настроить какое-то модульное тестирование в том, что по сути является моим первым приложением для Android. У меня было чертовски много времени на поиск ресурса для этого, но в конечном итоге я смог собрать воедино то, на что, я надеялся, был верным путем вперед.

Во-первых, это то, что я сделал.

В Eclipse я щелкнул правой кнопкой мыши свой проект, для которого я хотел бы создать тестовый проект. Я выбрал AndroidTools -> Новый тестовый проект Я заполнил необходимую информацию, выбрав местоположение ../MyApp/tests для нового проекта и выбрал MyApp в качестве проекта для тестирования. Все остальное было оставлено по умолчанию.

Во время выполнения я получил следующее сообщение об ошибке:

[2011-04-01 08:13:02 - WPMSTest] R.java был изменен вручную! Возврат к сгенерированной версии!

Но все казалось хорошо. У меня в папке с тестами было новое дерево исходников.

Поэтому я попытался выполнить его (сначала на оборудовании, а затем на эмуляторе) с помощью RunAs -> Android jUnit test.

В обоих случаях я получал в консоли затмения ниже:

[2011-04-01 08:23:04 - WPMSTest] Запуск инструментария android.test.InstrumentationTestRunner на эмуляторе устройства-5554
[2011-04-01 08:23:04 - WPMSTest] Не удалось запустить тест

Мои два файла манифеста:

WPMSTest:

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

<instrumentation android:targetPackage="com.WPMS" android:name="android.test.InstrumentationTestRunner" />
<application android:icon="@drawable/icon" android:label="@string/app_name">

<uses-library android:name="android.test.runner" />
</application>

WPMS:

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

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Я надеюсь, что кто-то видел что-то подобное раньше и может пролить свет на то, что я делаю неправильно. Пожалуйста, дайте мне знать, если вам нужны еще файлы, и я обязательно опубликую их.

Спасибо!

Ответы [ 4 ]

15 голосов
/ 01 апреля 2011

Мне не хватало TestSuite в моем тестовом проекте. После того, как мой класс AllTests расширил TestSuite, я получил ошибку.

3 голосов
/ 22 ноября 2013

Для меня проблема заключалась в том, что я использовал JUnit 4. Когда я перешел на JUnit 3, он начал работать.Надеюсь, это поможет.

0 голосов
/ 27 февраля 2015

У меня была та же проблема: JUnit 3 TestCase работает, но при запуске JUnit 4 TestCase я получил ошибку "Не удалось запустить тест".

Но, следуя предложению Кена, то есть сделать тестовый класс JUnit 4 расширяющим TestCase и переименовать метод теста с префиксом "test", тест запускает и запускает тест!

0 голосов
/ 01 апреля 2011
[2011-04-01 08:13:02 - WPMSTest] R.java was modified manually! Reverting to generated version!

Эта ошибка появляется, когда вы вручную вносите изменения в файл R.java.Иногда, когда вы очищаете проект, файл R.java пропадает.В таком случае вы должны либо скопировать R.java той же программы (если она хранится где-то в виде копии), либо создать новый проект.

По второму вопросу у меня тоже возникла похожая ошибка при тестировании приложения на устройстве.Мне пришлось внести изменения в оболочку, используя $ adb.затем устройство было распознано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...