我正在尝试使用Android UIAutomator进行一些简单的测试,我知道它需要由Gradle自UIAutomator 2.0构建,我可以运行我的简单测试,它只通过Android Studio或命令行按下主页按钮通过“gradlew.bat cC”,我想知道如何用adb命令运行它?
我试过
adb shell am instrument -w test.simple.uiatest/android.test.InstrumentationTestRunner
建议here,但我得到了
INSTRUMENTATION_STATUS: id=ActivityManagerService
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{test.simple.uiatest/android.test.InstrumentationTestRunner}
INSTRUMENTATION_STATUS_CODE: -1
android.util.AndroidException: INSTRUMENTATION_FAILED: test.simple.uiatest/android.test.InstrumentationTestRunner
at com.android.commands.am.Am.runInstrument(Am.java:951)
at com.android.commands.am.Am.onRun(Am.java:316)
at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
at com.android.commands.am.Am.main(Am.java:99)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:250)
下面是我的代码片段和build.gradle,我做错了什么?
package test.simple.uiatest;
import android.support.test.uiautomator.UiDevice;
import android.test.InstrumentationTestCase;
public class ApplicationTest extends InstrumentationTestCase {
private UiDevice theDevice;
@Override
public void setUp() throws Exception {
super.setUp();
theDevice = UiDevice.getInstance(getInstrumentation());
theDevice.pressHome();
}
public void testName() throws Exception {
theDevice.pressHome();
}
}
的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "23.0.0 rc2"
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
applicationId "test.simple.uiatest"
minSdkVersion 21
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'LICENSE.txt'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile 'com.android.support.test:runner:0.2'
androidTestCompile 'com.android.support.test:rules:0.2'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.0'
}
答案 0 :(得分:5)
如果未安装测试APK,或者< test_package> /< runner_class>,则会出现错误。在你的am instrument ...
命令中是错误的。
要列出设备上可用的检测测试,您可以运行adb shell pm list instrumentation
。您应该看到如下行:
instrumentation:test.simple.uiatest/android.test.InstrumentationTestRunner (target=simple.target.app)
如果您没有看到与测试匹配的行,则需要安装测试APK。如果已安装,请仔细检查test.simple.uiatest/android.test.InstrumentationTestRunner
输出的pm list instrumentation
部分是否与am instrument
命令匹配。
答案 1 :(得分:1)
作为帖子中的build.gradle,你应该使用" android.support.test.runner.AndroidJUnitRunner"
adb shell am instrument -w test.simple.uiatest/android.support.test.runner.AndroidJUnitRunner
答案 2 :(得分:1)
为您的包裹,试试这个:
adb shell am instrument -w test.simple.uiatest.test/android.support.test.runner.AndroidJUnitRunner
使用包test.simple.uiatest.test
代替。