Intereting Posts
Отображение символов Unicode в TextView Android В карте Google api v2 отображается пустой экран с кнопками масштабирования на эмуляторе Растровые изображения на Android Push Listview, когда клавиатура появляется без настройкиPan Номер строки Edittext и текущее положение курсора. Ловушки защиты от копирования Утечка памяти с помощью GoogleApiClient, обнаруженная Android Studio Невозможно разрешить символ: FusedLocationProviderClient. Используемая версия игровых сервисов 11.0.1 Пропутная ошибка обфускации Прозрачный фон Как программно определить, какой формат XML используют мои приложения для Android? Эффективно использовать редактор компоновки для макетов с нестационарными фрагментами Получение потока RTP – AudioStream, AudioGroup Android: «Не удалось выполнить« воспроизведение »в« HTMLMediaElement »: API может быть инициирован только жестом пользователя Синхронизация временных меток на нескольких устройствах

Не удалось выполнить тестовый прогон: прорыв инструментария из-за «сбоя процесса». При тестировании нескольких действий в Android

У меня проблема с тестированием моего приложения для Android.
У меня есть 2 класса testCase, если я выполняю их отдельно, нет проблем, тесты выполняются до конца. Но если я сделаю «щелчок правой кнопкой мыши» в своем тестовом проекте и выберем «Запуск под Android Junit Test», у меня есть сообщение

Launching instrumentation android.test.InstrumentationTestRunner on device emulator-5554 [2012-03-27 15:56:27 - matroussedemaquillageTest] Collecting test information [2012-03-27 15:56:31 - matroussedemaquillageTest] Test run failed: Instrumentation run failed due to 'Process crashed.' 

См. Ниже для моих двух тестовых классов:

Первый тестовый класс

 package fr.smardine.matroussedemaquillage.test; import android.test.ActivityInstrumentationTestCase2; import android.widget.ImageSwitcher; import fr.smardine.matroussedemaquillage.EntryPoint; public class EntryPointTest extends ActivityInstrumentationTestCase2<EntryPoint> { private EntryPoint mActivity; private ImageSwitcher mSwitcher; public EntryPointTest() { super("fr.smardine.matroussedemaquillage", fr.smardine.matroussedemaquillage.EntryPoint.class); } @Override protected void setUp() throws Exception { super.setUp(); } @Override protected void tearDown() throws Exception { super.tearDown(); } public void test2() { assertEquals(2, 2); } } 

И второе:

 package fr.smardine.matroussedemaquillage.test; import android.test.ActivityInstrumentationTestCase2; import android.widget.ImageView; import fr.smardine.matroussedemaquillage.Main; public class MainTest extends ActivityInstrumentationTestCase2<Main> { private Main mActivity; private ImageView btRemplir; private ImageView btPerime; private ImageView btNotes; public MainTest() { super("fr.smardine.matroussedemaquillage", fr.smardine.matroussedemaquillage.Main.class); } @Override protected void setUp() throws Exception { super.setUp(); } @Override protected void tearDown() throws Exception { super.tearDown(); } public void test1() { assertEquals(1, 1); } } 

Как вы можете видеть, мой тест не настолько сложный, даже если я «уничтожу пользовательские данные» при запуске моего эмулятора, есть одно и то же сообщение, если я выполняю два теста.
Кстати, эмулятор работает под Android 2.1, и это мой файл AndroidManifest.xml:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="fr.smardine.matroussedemaquillage.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="7" /> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="fr.smardine.matroussedemaquillage" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <uses-library android:name="android.test.runner" /> </application> </manifest> 

Изменить: мой журнал cat:

 I/ActivityManager(64): Start proc fr.smardine.matroussedemaquillage for added application fr.smardine.matroussedemaquillage: pid=510 uid=10029 gids={3003, 1015} D/ddm-heap(510): Got feature list request D/dalvikvm(510): GC freed 5427 objects / 420224 bytes in 90ms D/dalvikvm(510): GC freed 6498 objects / 506616 bytes in 79ms D/dalvikvm(510): GC freed 7048 objects / 567464 bytes in 90ms D/dalvikvm(510): GC freed 8628 objects / 503840 bytes in 73ms I/System.out(510): Failed to open test.properties I/AndroidRuntime(510): AndroidRuntime onExit calling exit(-1) – D/Zygote(30): Process 510 exited cleanly (255) I/ActivityManager(64): Process fr.smardine.matroussedemaquillage (pid 510) has died. W/ActivityManager(64): Crash of app fr.smardine.matroussedemaquillage running instrumentation ComponentInfo{fr.smardine.matroussedemaquillage.test/android.test.Instrumentatio‌​nTestRunner} D/ActivityManager(64): Uninstalling process fr.smardine.matroussedemaquillage D/AndroidRuntime(504): Shutting down VM D/dalvikvm(504): DestroyJavaVM waiting for non-daemon threads to exit D/dalvikvm(504): DestroyJavaVM shutting VM down D/dalvikvm(504): HeapWorker thread shutting down D/dalvikvm(504): HeapWorker thread has shut down D/jdwp(504): JDWP shutting down net... D/jdwp(504): Got wake-up signal, bailing out of select I/dalvikvm(504): Debugger has detached; object registry had 1 entries D/dalvikvm(504): VM cleaning up D/dalvikvm(504): LinearAlloc 0x0 used 643668 of 5242880 (12%) I/dalvikvm(504): JNI: AttachCurrentThread (from ???.???) E/AndroidRuntime(504): ERROR: thread attach failed' 

Solutions Collecting From Web of "Не удалось выполнить тестовый прогон: прорыв инструментария из-за «сбоя процесса». При тестировании нескольких действий в Android"

Я использовал эту ошибку, когда использовал System.exit (0) в моей тестовой активности onFinish, как показано ниже:

 @Override public void finish() { super.finish(); System.exit(0); } 

Поэтому проверьте метод onFinish основной активности.

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

Я просмотрел LogCat и отфильтровал те теги «TestRunner» и нашел сообщение об ошибке утверждения среди других журналов тестирования.

Я также столкнулся с подобной проблемой при работе с оборудованием Android. В конце концов я пришел к выводу, что проблема в System.exit (0) .

Теперь причина, почему это вызывает проблему. Согласно своей документации

Заставляет виртуальную машину прекратить работу и завершить работу программы.

Когда System.exit (0) получает исполняемый все остальные коды, написанные после пропущения этого кода, и класс активности завершается и переходит на сбор мусора. Поскольку Instrumentation полагается на метод жизненного цикла активности, класс активности – это собранный мусор, нет возможности вызвать его методы, если сам объект не существует.

Поэтому избегайте использования System.exit (0), если вы хотите выполнить единичное тестирование приложения, вместо этого используйте метод finish () .

В случае, если кто-либо еще использует Robotium и видит ошибку: я забыл tearDown открытую активность, и это привело к ошибке, как описано выше.

 public void tearDown() throws Exception { solo.finishOpenedActivities(); }