44

我正在尝试进行浓缩咖啡测试,但我不断收到此错误:

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

它工作过一次,但我无法正确重新创建报告。他们只是空白,没有测试任何东西。我尝试了很多命令,包括

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

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

这是我的代码片段:

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!")));
        }
    }

构建.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'
}

如果它意味着什么 -<instrumentation>清单中的属性被涂成红色,就好像 IntelliJ 无法识别它们一样。

任何帮助都很棒,谢谢!

4

7 回答 7

98

您需要检查您的设备上安装了哪些检测包:

 adb shell pm list instrumentation

然后验证com.mikeestrada.test是否确实在此处列出。

于 2014-04-30T17:34:46.733 回答
11

如果缺少检测包,请使用以下命令安装它:

$ gradle :{$project}:installDebugAndroidTest

显示 installDebugAndroidTest 位置的 gradle 任务

于 2015-07-02T13:27:58.530 回答
6

查看您的 build.gradle 文件,问题实际上是您在 defaultConfig 部分中没有以下配置:

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

浓缩咖啡需要GoogleInstrumentationTestRunner才能工作。

同样使用 gradle 构建系统,您不需要AndroidManifest.xml测试项目,因为它是自动生成的。

于 2014-10-07T09:41:36.633 回答
1

要正确运行仪器测试,请遵循以下说明:

  1. 在设备/模拟器上安装基础包。例如,如果要测试devDebug{flavorBuildType} 组合,请执行./gradlew installDevDebug. devDebug用你在项目中拥有的 flavor 和 buildType替换字符串。

  2. 在设备/模拟器上安装测试包。如果您devDebug现在安装执行./gradlew installDevDebugAndroidTest,默认情况下这将安装添加.test后缀的基本包

  3. 验证仪器是否正确安装,运行adb shell pm list instrumentation它应该打印一条带有您的测试包和可用运行器的行,例如:androidx.test.runner.AndroidJUnitRunner

  4. 启动仪器测试。例如,如果你想从你的包中测试一个单独的测试类,你可以使用这个adb shell am instrument -w -e class com.your.base.package.MyClassTest com.your.base.package.test/androidx.test.runner.AndroidJUnitRunner在此处查看文档以获取所有可用选项

  5. 可选:测试完成后,您可以卸载软件包./gradlew uninstallDevDebug uninstallDevDebugAndroidTest

于 2021-01-15T10:14:50.680 回答
0

此外,看起来您的应用程序包是com.mikeestrada. 所以在 AndroidManifest 中设置android:targetPackageandroid:targetPackage="com.mikeestrada".

我希望这将有所帮助。

于 2014-09-16T12:49:25.833 回答
0

问题是您缺少空格:

instrumentationandroid:name

应该

instrumentation android:name
于 2015-07-17T12:46:17.380 回答
0

https://developer.android.com/studio/test/command-line

看起来您需要确保安装了应用程序和测试 apk。

于 2020-11-07T20:04:04.437 回答