Ошибка пропуска тестового прогона: запуск приборов не удалось из-за «Java.lang.classnotfoundException» -- android поле с участием eclipse поле с участием android-testing пол Связанный проблема

Test run failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException'


23
vote

проблема

русский

Это мой первый раз настроив проект теста на Android для проверки проекта Android.

Я создал очень базовый тестовый случай, который я пытаюсь запустить, однако то, что у меня нет. Я получаю <код> Test run failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException' .

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

Ниже приведена информация от консоли:

 <код> [2013-04-16 13:21:49 - XyzProgramTest] Android Launch! [2013-04-16 13:21:49 - XyzProgramTest] adb is running normally. [2013-04-16 13:21:49 - XyzProgramTest] Performing android.test.InstrumentationTestRunner JUnit launch [2013-04-16 13:21:49 - XyzProgramTest] Automatic Target Mode: launching new emulator with compatible AVD 'GalaxyNexusAPI_17' [2013-04-16 13:21:49 - XyzProgramTest] Launching a new emulator with Virtual Device 'GalaxyNexusAPI_17' [2013-04-16 13:21:53 - Emulator] extension WGL_ARB_make_current_read was not found [2013-04-16 13:21:53 - Emulator] extension WGL_EXT_swap_control was not found [2013-04-16 13:21:53 - Emulator] Failed to create pbuf surface for FB 0x3004 [2013-04-16 13:21:53 - Emulator] emulator: WARNING: Could not initialize OpenglES emulation, using software renderer. [2013-04-16 13:21:54 - XyzProgramTest] New emulator found: emulator-5554 [2013-04-16 13:21:54 - XyzProgramTest] Waiting for HOME ('android.process.acore') to be launched... [2013-04-16 13:22:55 - XyzProgramTest] HOME is up on device 'emulator-5554' [2013-04-16 13:22:55 - XyzProgramTest] Uploading XyzProgramTest.apk onto device 'emulator-5554' [2013-04-16 13:22:55 - XyzProgramTest] Installing XyzProgramTest.apk... [2013-04-16 13:23:57 - XyzProgramTest] Success! [2013-04-16 13:23:57 - XyzProgramTest] Project dependency found, installing: XyzProgram [2013-04-16 13:23:57 - XyzProgram] Uploading XyzProgram.apk onto device 'emulator-5554' [2013-04-16 13:23:58 - XyzProgram] Installing XyzProgram.apk... [2013-04-16 13:24:05 - XyzProgram] Success! [2013-04-16 13:24:05 - XyzProgramTest] Launching instrumentation android.test.InstrumentationTestRunner on emulator-5554 [2013-04-16 13:24:07 - XyzProgramTest] Test run failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException'   

Дополнительные ноты

в моем проекте теста на Android, я создал простой тест с пакетом, похожим на пакет, который соответствует классу, я пытаюсь проверить в моем проекте Android. Так что-то вроде <код> com.company.android.projectname . Я указал это в проекте Android-теста <код> manifest файла <код> instrumentation раздел.

 <код> <instrumentation     android:name="android.test.InstrumentationTestRunner"     android:targetPackage="com.company.android.projectname" />   

Когда я изменил это, чтобы соответствовать этому, я получаю новую ошибку, которая написана <код> Test run failed: Unable to find instrumentation target package: com.company.android.projectname

Я не на 100% Конечно, что это <код> re0 должно быть, и если мне нужны несколько приборов для каждого пакета, который я хочу проверить и т. Д. Когда я установил его в <код> re1 То есть когда я получаю <код> re2 .

Английский оригинал

This is my first time setting up an Android test project to test a Android project.

I've created a very basic test case which I'm trying to get to run, however what I have does not run. I get a Test run failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException'.

I would troubleshot this more, however I don't get any more information, such as which class it is trying to find, etc. Any ideas on how to get more information from the error? Any common areas I should look at, or anything that might need to be configured that I'm overlooking?

Below is the information from the console:

[2013-04-16 13:21:49 - XyzProgramTest] Android Launch! [2013-04-16 13:21:49 - XyzProgramTest] adb is running normally. [2013-04-16 13:21:49 - XyzProgramTest] Performing android.test.InstrumentationTestRunner JUnit launch [2013-04-16 13:21:49 - XyzProgramTest] Automatic Target Mode: launching new emulator with compatible AVD 'GalaxyNexusAPI_17' [2013-04-16 13:21:49 - XyzProgramTest] Launching a new emulator with Virtual Device 'GalaxyNexusAPI_17' [2013-04-16 13:21:53 - Emulator] extension WGL_ARB_make_current_read was not found [2013-04-16 13:21:53 - Emulator] extension WGL_EXT_swap_control was not found [2013-04-16 13:21:53 - Emulator] Failed to create pbuf surface for FB 0x3004 [2013-04-16 13:21:53 - Emulator] emulator: WARNING: Could not initialize OpenglES emulation, using software renderer. [2013-04-16 13:21:54 - XyzProgramTest] New emulator found: emulator-5554 [2013-04-16 13:21:54 - XyzProgramTest] Waiting for HOME ('android.process.acore') to be launched... [2013-04-16 13:22:55 - XyzProgramTest] HOME is up on device 'emulator-5554' [2013-04-16 13:22:55 - XyzProgramTest] Uploading XyzProgramTest.apk onto device 'emulator-5554' [2013-04-16 13:22:55 - XyzProgramTest] Installing XyzProgramTest.apk... [2013-04-16 13:23:57 - XyzProgramTest] Success! [2013-04-16 13:23:57 - XyzProgramTest] Project dependency found, installing: XyzProgram [2013-04-16 13:23:57 - XyzProgram] Uploading XyzProgram.apk onto device 'emulator-5554' [2013-04-16 13:23:58 - XyzProgram] Installing XyzProgram.apk... [2013-04-16 13:24:05 - XyzProgram] Success! [2013-04-16 13:24:05 - XyzProgramTest] Launching instrumentation android.test.InstrumentationTestRunner on emulator-5554 [2013-04-16 13:24:07 - XyzProgramTest] Test run failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException' 

Additional Notes

In my Android test project, I created a simple test with a package similar to the package that matches up with the class I'm trying to test in my Android project. So something like com.company.android.projectname. I've specified this in the Android test project manifest file's instrumentation section.

<instrumentation     android:name="android.test.InstrumentationTestRunner"     android:targetPackage="com.company.android.projectname" /> 

When I changed this to match that, I get a new error that says Test run failed: Unable to find instrumentation target package: com.company.android.projectname

I'm not 100% sure what that targetPackage should be and if I need multiple instrumentations for each package I want to test, etc. When I set it to com.company.android that is when I get the java.lang.ClassNotFoundException.

</div
        

Список ответов

21
 
vote

Я обновил библиотеки Androidx и начал получать эту ошибку.

Чтобы исправить это, в build.gradle я изменил строку:

 <код> testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'   

к

 <код> testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"   
 

I had upgraded to androidx libraries and started getting this error.

To fix it, in build.gradle I changed the line:

testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner' 

to

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 
</div
 
 
8
 
vote

fyi Я столкнулся с этим и должен был добавить

<Код> <uses-library android:name="android.test.runner"/>

в моем <код> <application/> тега

 

FYI I ran into this and had to add

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

within my <application/> tag

</div
 
 
7
 
vote

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

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

 

In my case, I was trying to run the tests on Jelly Bean emulator. Android instrumentation does not seem to support Jelly Bean. I could run the tests on lollipop.

You may also not able to run android tests through release build type. Ensure that debug build type is active.

</div
 
 
5
 
vote
vote
Лучший ответ
 

выяснил мою проблему и выставляя ответ на документацию ...

Корень моей проблемы составлял 2 разных вещей:

  1. Я сделал некоторую рефакторинг, что изменило местоположение моего <Код> android.app.Application класс и моя деятельность. Это сделало это, так что мой Главная программа не работала, поскольку мне нужно было обновить мою манифест в моем <Код> String fqlQuery = "{" + "'email':'SELECT uid, email FROM user WHERE uid = me()'," + "'friendinfo':'SELECT uid, name,pic_square, birthday FROM user WHERE uid IN (SELECT uid2 FROM SELECT uid2 FROM friend WHERE uid1 = me()) AND birthday'"+ "}"; 0 .
  2. После создания обновлений моего манифеста в моем проекте Android, мне пришлось сделать некоторые обновления в моем <код> String fqlQuery = "{" + "'email':'SELECT uid, email FROM user WHERE uid = me()'," + "'friendinfo':'SELECT uid, name,pic_square, birthday FROM user WHERE uid IN (SELECT uid2 FROM SELECT uid2 FROM friend WHERE uid1 = me()) AND birthday'"+ "}"; 1 , чтобы указать на обновленное место класса, которое расширяет <код> String fqlQuery = "{" + "'email':'SELECT uid, email FROM user WHERE uid = me()'," + "'friendinfo':'SELECT uid, name,pic_square, birthday FROM user WHERE uid IN (SELECT uid2 FROM SELECT uid2 FROM friend WHERE uid1 = me()) AND birthday'"+ "}"; 2 ,

После этого некоторые очистили и тестируются снова, и все было хорошо.

 

Figured out my issue and am posting the answer for documentation purposes...

The root of my problem was 2 different things:

  1. I did some refactoring, which change the location of my android.app.Application class and my activities. This made it so my main program was not working as I needed to update my manifest in my android project.
  2. After making the updates to my manifest in my android project, I had to make some updates in my android test project to point to the updated location of the class that extends android.app.Application.

After that, did some cleans and tested again and things were good.

</div
 
 
   
   
1
 
vote

У меня была эта проблема после слияния, в которой build.gradle определял неправильный тестовый пакет, поскольку я использовал по умолчанию.

Просто удаляя эти строки от Build.Gradle, он смог найти необходимые классы в упаковке по умолчанию, который является <Код> src/androidTest .

 <код> sourceSets {     instrumentTest.setRoot('src/instrumentTest') } //removed this to use the default androidTest source set.   

Это, вероятно, не будет точным решением, но, надеюсь, направляет кого-то в правильном направлении.

 

I had this problem after a merge, in which build.gradle was specifying the wrong test package, since I had been using the default.

By simply removing these lines from build.gradle, it was able to find the necessary classes in the default package, which is src/androidTest.

sourceSets {     instrumentTest.setRoot('src/instrumentTest') } //removed this to use the default androidTest source set. 

This will probably not be the exact solution, but hopefully guides someone in the right direction.

</div
 
 
1
 
vote

Я столкнулся с этой проблемой сегодня, я принял Android-специфичное муравьев BULLIES.xML , который сидит в каталоге «$ {SDK.DIR} / Tools / ant /», чтобы выполнить все тестовые случаи в командной строке, но stdout сообщает об ошибке мне так же, как ваша:

 <код> vinceMacBook ~/dev/aSQLite+-android/tests$ ant clean uninstall debug install test ... test:      [echo] Running tests ...      [exec] INSTRUMENTATION_RESULT: shortMsg=java.lang.ClassNotFoundException      [exec] INSTRUMENTATION_RESULT: longMsg=java.lang.ClassNotFoundException:         android.test.InstrumentationTestRunner      [exec] INSTRUMENTATION_CODE: 0   

Я провожу несколько раз, чтобы выяснить это, я нашел главную причину, причитающуюся в коренном модуле <код> AndroidManifest.xml , я думал, что приложение элемент нечего будет настроить так Я опущел его в MANALEST элемент, который вызывает мою проблему.

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

 <код> vinceMacBook ~/dev/aSQLite+-android$ tree . ├── AndroidManifest.xml │       <?xml version="1.0" encoding="utf-8"?> │       <manifest │           xmlns:android="http://schemas.android.com/apk/res/android" │           package="com.vincestyling.asqliteplus" │           android:versionCode="1" │           android:versionName="0.1"> │ │           <uses-sdk android:minSdkVersion="8" /> │            │           <!-- important configuration, cannot be omit even if nothing to say. --> │           <application /> │ │       </manifest> │ ├── build.xml │       unchanged, generated by "android create project <project_name>" command. │ ├── project.properties │       unchanged, generated by "android create project <project_name>" command. │ ├── src │   └── com │       └── vincestyling │           └── asqliteplus │               ├── DBOperator.java │               ├── DBOverseer.java │               └── the library source code lie here... │ └── tests     ├── AndroidManifest.xml     │       <?xml version="1.0" encoding="utf-8"?>     │       <manifest     │           xmlns:android="http://schemas.android.com/apk/res/android"     │           package="com.vincestyling.asqliteplus.tests">     │     │           <application>     │               <uses-library android:name="android.test.runner"/>     │           </application>     │     │           <instrumentation     │               android:name="android.test.InstrumentationTestRunner"     │               android:targetPackage="com.vincestyling.asqliteplus"/>     │     │       </manifest>     │     ├── ant.properties     │       # [Comments], [Comments], [Comments] which generated by command.     │       # [Comments], [Comments], [Comments] which generated by command.     │       # [Comments], [Comments], [Comments] which generated by command.     │     │       # important configuration, point to the root library module.     │       tested.project.dir=../     │     ├── build.xml     │       unchanged, generated by "android create test-project <project_name>" command.     │     └── src         └── com             └── vincestyling                 └── asqliteplus                     ├── BaseDBTest.java                     ├── QueryStatementTest.java                     └── the test source code lie here...   

Моя структура проекта последовала за android тестовые проекты описание, который Google Предложите нам сделать, состоят из модуля корневой библиотеки, который несущий основной логик и тестовый модуль, который внутри корневого модуля. Выше являются ключевыми ресурсами в проекте, но не были все файлы, я опубликую ссылку проекта здесь, как только я отпускаю его.

------------ Обновление 2014-01-06 -----------------

В настоящее время мой проект был опубликован на моем Github: asqliteplus-Android детали, если интересно.

 

I've encountered this problem today, I adopted android-specific ant build.xml which sitting in "${sdk.dir}/tools/ant/" directory to perform all the test cases in command-line, but the STDOUT reports error to me just like yours:

vinceMacBook ~/dev/aSQLite+-android/tests$ ant clean uninstall debug install test ... test:      [echo] Running tests ...      [exec] INSTRUMENTATION_RESULT: shortMsg=java.lang.ClassNotFoundException      [exec] INSTRUMENTATION_RESULT: longMsg=java.lang.ClassNotFoundException:         android.test.InstrumentationTestRunner      [exec] INSTRUMENTATION_CODE: 0 

I spend a few time to figuring out this, I found the main cause due in the root module's AndroidManifest.xml, I thought the application element is nothing to be configure so I omitted it in the manifest element, which causing my problem.

I don't sure you share the same structure with me, so I post my project structure here, also the key file's content, hope can help somebody.

vinceMacBook ~/dev/aSQLite+-android$ tree . ├── AndroidManifest.xml │       <?xml version="1.0" encoding="utf-8"?> │       <manifest │           xmlns:android="http://schemas.android.com/apk/res/android" │           package="com.vincestyling.asqliteplus" │           android:versionCode="1" │           android:versionName="0.1"> │ │           <uses-sdk android:minSdkVersion="8" /> │            │           <!-- important configuration, cannot be omit even if nothing to say. --> │           <application /> │ │       </manifest> │ ├── build.xml │       unchanged, generated by "android create project <project_name>" command. │ ├── project.properties │       unchanged, generated by "android create project <project_name>" command. │ ├── src │   └── com │       └── vincestyling │           └── asqliteplus │               ├── DBOperator.java │               ├── DBOverseer.java │               └── the library source code lie here... │ └── tests     ├── AndroidManifest.xml     │       <?xml version="1.0" encoding="utf-8"?>     │       <manifest     │           xmlns:android="http://schemas.android.com/apk/res/android"     │           package="com.vincestyling.asqliteplus.tests">     │     │           <application>     │               <uses-library android:name="android.test.runner"/>     │           </application>     │     │           <instrumentation     │               android:name="android.test.InstrumentationTestRunner"     │               android:targetPackage="com.vincestyling.asqliteplus"/>     │     │       </manifest>     │     ├── ant.properties     │       # [Comments], [Comments], [Comments] which generated by command.     │       # [Comments], [Comments], [Comments] which generated by command.     │       # [Comments], [Comments], [Comments] which generated by command.     │     │       # important configuration, point to the root library module.     │       tested.project.dir=../     │     ├── build.xml     │       unchanged, generated by "android create test-project <project_name>" command.     │     └── src         └── com             └── vincestyling                 └── asqliteplus                     ├── BaseDBTest.java                     ├── QueryStatementTest.java                     └── the test source code lie here... 

My project structure followed Android Test Projects's description which Google suggest us to do, consist of root library module which carrying core logic, and test module which inside the root module. Above are the key resources in project, but weren't all files, I shall post the project link here once I release it.

------------ Update 2014-01-06 --------------

Currently, my project was published on my github : aSQLitePlus-android, check the details if interested.

</div
 
 
1
 
vote

Я получил ту же ошибку, потому что я забыл добавить <код> androidx.test:runner Тестовая зависимость.

 <код> androidTestImplementation "androidx.test:runner:1.2.0"   
 

I got the same error because I forgot to add androidx.test:runner test dependency.

androidTestImplementation "androidx.test:runner:1.2.0" 
</div
 
 

Связанный проблема

0  Как мой банк обратная связь обратно на мой мобильный телефон?  ( How does my bank reverse connect back to my mobile phone ) 
Я бродил, как это работает программирование мудрым. Если я вошел в мой веб-сайт онлайн-банкинга на моем компьютере, так как я вхожу в систему, приложение на...

0  Новое намерение не начнется внутри Onlongpress?  ( New intent wont start inside onlongpress ) 
Я создал класс TapSturedEtector для поверхностного представления. Я поймаю длинное сенсорное событие, и я хочу начать новую активность. Но это не работает. На...

0  Запуск Android-тестового проекта от Launcher  ( Running android test project from launcher ) 
У меня есть некоторые требования, где я должен запускать тестовый проект в любое время на моем устройстве, не подключая его к системе и запущена через Eclipse...

2  Как перехватить центральную кнопку  ( How to intercept a center button press ) 
У меня есть приложение, в котором важно, чтобы я выполнял какой-код, когда пользователь нажимает центральную кнопку на устройстве Android. Я уже обрабатываю п...

-1  Начать активность и не заканчивать деятельность  ( Start activity and dont finish activity ) 
У меня есть всплеск активности и свидетельствующая активность, в которой я открываю некоторые активиты: Резюме: SPLAH - & GT; Главная & GT; A или B или C и ...

0  Класс libgdx не рисует текстуру  ( Libgdx class does not draw texture ) 
Я пытаюсь нарисовать игровой символ в моем классе "MaigaMestreen.java" из класса "Mavans.java", когда я касаюсь экрана моего телефона. К сожалению, моя прогр...

2  Как обрабатывать Swipe-To-Remove на RecyClerview правильно?  ( How to handle swipe to remove on recyclerview correctly ) 
фон Я пытаюсь позволить удалить элементы вида рецирллеров, но по какой-то причине он не всегда всегда играет, показывая пустые пробелы вместо карт. Я сдел...

0  Как я могу прочитать все контакты в Android 1.5 на мобильном?  ( How can i read all contacts in android 1 5 mobile ) 
Я хочу быть в состоянии прочитать все контакты в Android Mobile версии 1.5. Пожалуйста, помогите мне. Список считывать контент и пример, пожалуйста, спасибо...

0  Swiperefresh ListView, обновления, но не то, как вы ожидаете  ( Swiperefresh listview updates but not how you would expect ) 
У меня есть список, который использует функцию SwipeFresh, и я столкнулся с странной проблемой. Когда я проводлю вниз, я вижу анимацию и мою информацию (обнов...

0  Android Studio Back Button  ( Android studio back button problems ) 
на данный момент. Я создал простое приложение для викторины на Android Studio. Все работает нормально, в том числе, когда я иду от первой фактической жизни. Я...

64  Uninstall adb не удалось  ( Adb uninstall failed ) 
Я пишу некоторые образцы приложений. После отладка этих приложений я не вижу кнопку удаления в управлении приложениями моего устройства. Когда я делаю ADB у...

0  ValueAnimator не работает, как это должно быть. Перезапуск от 0, а не с 1-го значения  ( Valueanimator does not work how it should restarts from 0 instead of from 1st v ) 
Это мой код: <код> public static void countTextViewTravelMode(final Integer value, final TextView myView, final CrudStateCallback back){ Integer begin ...

0  Замена ViewPager с фрагментом меню  ( Replacing viewpager with menuitem fragment ) 
У меня есть <код> Activity , в котором всего 4 <код> fragments есть. Из 4, 3 фрагменты интегрированы в виде вкладок с Viewpager , 4-й в меню в качестве и...

37  Android получают путь к изображению от Drawnable в виде строки  ( Android get image path from drawable as string ) 
Есть ли способ, которым я могу получить путь к изображению от Drawable папки в Android в виде строки. Мне это нужно, потому что я реализую свой собственный пр...

0  Новое развитие приложений с использованием Cordova и Ionic  ( Native app development using cordova and ionic ) 
Как сохранить процесс или сервис всегда запущены даже после того, как приложение будет убито пользователем, похожее на секундомер, который будет запущен даже ...