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.
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.