ejemplo java android android-espresso

java - ejemplo - Error=No se puede encontrar la información de instrumentación para: ComponentInfo{}



jcombobox (5)

Estoy tratando de levantar las pruebas de café expreso, pero sigo recibiendo este error:

INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.mikeestrada.test/android.test.InstrumentationTestRunner}

Funcionó una vez, pero no puedo hacer que los informes se vuelvan a crear correctamente. Están en blanco, no probaron nada. He intentado una plétora de comandos que incluyen

adb shell am instrument -w -r com.mikeestrada.test/android.test.InstrumentationTestRunner

y

adb shell am instrument -w -r com.mikeestrada.test/com.google.android.apps.common.testing.testrunner.GoogleInstrumentation TestRunner

Aquí están mis fragmentos de código:

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.myapplication.MainActivity" 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> <instrumentationandroid:name="com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner" android:targetPackage="com.mikeestrada.test"/>

TestStartScreen.java

package com.mikeestrada.test; import android.test.ActivityInstrumentationTestCase2; import android.test.ActivityUnitTestCase; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.LargeTest; import android.view.View; import com.example.myapplication.MainActivity; import com.example.myapplication.R; import com.google.android.apps.common.testing.ui.espresso.Espresso; import com.google.android.apps.common.testing.ui.espresso.ViewAssertion; import com.google.android.apps.common.testing.ui.espresso.ViewInteraction; import com.google.android.apps.common.testing.ui.espresso.action.ViewActions; import com.google.android.apps.common.testing.ui.espresso.assertion.ViewAssertions; import com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers; import junit.framework.Assert; import org.hamcrest.Matcher; public class TestStartScreen extends ActivityInstrumentationTestCase2<MainActivity> { public TestStartScreen() { super(MainActivity.class); } @LargeTest public void testHelloWorld(final Matcher<View> viewMatcher) { // Find //ViewInteraction button1 = onView(ViewMatchers.withId(R.id.button1)); // Find the button ViewInteraction helloWorldText = Espresso.onView(ViewMatchers.withText("Hello world!")); // Find the text // Action //button1.perform(ViewActions.click()); // Click the button helloWorldText.perform(ViewActions.typeText("Bye World!")); Espresso.onView(ViewMatchers.withText(R.id.withText)); // Check helloWorldText.check(ViewAssertions.matches((ViewMatchers.isDisplayed()))); // Hello world text is hidden //Espresso.onView(withId(R.id.my_view)).check(matches(withText("Hello world!"))); } }

build.gradle

buildscript { repositories { mavenCentral() } dependencies { classpath ''com.android.tools.build:gradle:0.7.+'' } } apply plugin: ''android'' repositories { mavenCentral() } android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 19 } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } sourceSets { main { manifest.srcFile ''AndroidManifest.xml'' assets.srcDirs = [''assets''] } } } dependencies { compile ''com.android.support:appcompat-v7:+'' instrumentTestCompile files(''libs/espresso-1.1-bundled.jar'') } android { defaultConfig { testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner" } } task wrapper (type: Wrapper) { gradlerVersion = ''1.9'' }

Si esto significa algo, los atributos de <instrumentation> en el manifiesto se colorean en rojo como si IntelliJ no los reconociera.

Cualquier ayuda es genial, gracias!


Además, parece que el paquete de tu aplicación es com.mikeestrada . Entonces, en AndroidManifest establece android:targetPackage como android:targetPackage="com.mikeestrada" .

Espero que esto sea de ayuda.


De las respuestas anteriores, si falta el paquete de instrumentación, instálelo con el siguiente comando:

$ gradle :{$project}:installDebugAndroidTest


Debe verificar qué paquetes de instrumentación se han instalado en su dispositivo:

adb shell pm list instrumentation

Luego, verifique si com.mikeestrada.test está en la lista allí.


El problema es que te falta un espacio:

instrumentationandroid:name

debiera ser

instrumentation android:name


En cuanto a su archivo build.gradle, el problema es que no tiene la siguiente configuración en la sección defaultConfig:

testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"

Espresso requiere GoogleInstrumentationTestRunner para funcionar.

Además, con un sistema de compilación gradle no debería necesitar un AndroidManifest.xml para el proyecto de prueba porque se genera automáticamente.