【发布时间】:2015-03-13 04:00:09
【问题描述】:
我正在使用:
- Android Studio 1.1.0
- Gradle 2.2.1
- Gradle 的 Android 插件:1.1.0
我们最近迁移到了 Android Studio,我们正在努力使我们的仪器测试工作。但是当我运行测试时,它给了我错误
运行测试 测试运行开始测试运行失败:找不到仪器信息:ComponentInfo{com.xxx.xxx.test/android.test.InstrumentationTestRunner} 空测试套件。
我不确定我在这里做错了什么。请看下面的配置:
应用类:
public class XxxApp extends MultiDexApplication
{
...
}
App build.gradle
apply plugin: 'com.android.application'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'com.google.android.gms:play-services-base:6.5.87'
compile 'com.google.android.gms:play-services-maps:6.5.87'
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:multidex:1.0.0'
compile 'org.apache.commons:commons-lang3:3.3.2'
compile 'com.google.code.gson:gson:2.3.1'
compile 'joda-time:joda-time:2.7'
compile 'org.roboguice:roboguice:2.0'
compile project(':Common')
compile project(':zxing-lib')
androidTestCompile fileTree(dir: 'test-libs', include: '*.jar')
androidTestCompile('com.android.support:multidex-instrumentation:1.0.1') {
exclude group: 'com.android.support', module: 'multidex'
}
androidTestCompile 'com.google.dexmaker:dexmaker:1.+'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.+'
androidTestCompile 'junit:junit:4.11'
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
androidTestCompile 'org.mockito:mockito-core:1.9.5'
}
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
enforceUniquePackageName false
dexOptions {
javaMaxHeapSize "4g"
}
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
applicationId "com.xxx.xxx"
multiDexEnabled true
testApplicationId "com.xxx.xxx.test"
testInstrumentationRunner 'android.test.InstrumentationTestRunner'
// Does not work testInstrumentationRunner 'com.android.test.runner.MultiDexTestRunner'
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'LICENSE.txt'
}
lintOptions {
abortOnError false
checkReleaseBuilds false
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
androidTest.setRoot('tests')
androidTest.java.srcDir('tests/src')
androidTest.res.srcDir('tests/res')
androidTest.assets.srcDirs('tests/assets')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
productFlavors {
}
}
测试类
public class XxxTests extends InstrumentationTestCase
{
public void testXxx()
{
...
}
}
顶级 build.gradle
dependencies
{
classpath 'com.android.tools.build:gradle:1.1.0+'
}
【问题讨论】:
-
几个问题问你:你达到dex限制了吗?为什么要使用 MultiDex?发布一个示例测试,您发布的测试是空的,这就是您收到错误的原因。
-
我们正在使用第三方组件,这要求我们制作我们的应用程序 multidex。只需考虑 assertTrue(true);作为测试中的语句,使其变得非常简单!
-
发布您的整个
build.gradle。是的,但是测试是空的,你会得到你发布的错误。 -
将所有内容发布到您的
build.gradle. -
更新:我添加了完整的 build.gradle。另外,当我只使用 plan InstrumentationRunner 而不是 multi dex runner 时,测试似乎有效。
标签: android android-studio android-gradle-plugin android-instrumentation