我尝试为我的Android应用程序的某种风格运行一个Instrumentation Test并始终得到这个:
Test running failed: Unable to find instrumentation info for: ComponentInfo{<packackename>/android.support.test.runner.AndroidJUnitRunner}
Empty test suite.
这只发生在某个productFlavor中,我必须在build.gradle中更改packagename&#34;手动&#34;用:
applicationVariants.all { variant ->
def flavorName = variant.getVariantData().getVariantConfiguration().getFlavorName()
def mergedFlavour = variant.getVariantData().getVariantConfiguration().getMergedFlavor();
if (flavorName.toLowerCase().contains("foobar")) {
mergedFlavour.setApplicationId(mergedFlavour.getApplicationId() + ".foobar")
}
}
我已经尝试在android-testing.gradle中做同样的事情,但实际上所有的包名都很好看:
Installing de.test.foobar.debug
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/de.test.foobar.debug"
pkg: /data/local/tmp/de.test.foobar.debug
Success
Installing APK:
Uploading file to: /data/local/tmp/de.test.foobar.debug.test
Installing de.test.foobar.debug.test
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/de.test.foobar.debug.test"
pkg: /data/local/tmp/de.test.foobar.debug.test
Success
如果我删除&#34;手册&#34;更改此特定productflavor的包名称,所有测试都执行正常。 我已经尝试更改了instrumentationRunner并确保它在测试执行的配置中是相同的 - 但遗憾的是没有运气......
如果执行测试,是否有可能覆盖已更改的applicationId?
感谢您的每一个输入!
答案 0 :(得分:2)
如果您最近升级到Android Studio 2.x并启用了MultiDex(即时运行需要它),您需要在gradle.build中添加以下内容
defaultConfig {
...
multiDexEnabled true // <- if you have this you need the following
testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"
...
}
答案 1 :(得分:0)
testApplicationId 需要为您修改的每种风格匹配 applicationId ,以便Test Runner可以找到测试。您可以使用 testVariants 以及 applicationVariants 来完成此操作。
在你的情况下是这样的:
testVariants.all { variant ->
def flavorName = variant.getVariantData().getVariantConfiguration().getFlavorName()
def mergedFlavour = variant.getVariantData().getVariantConfiguration().getMergedFlavor();
if (flavorName.toLowerCase().contains("foobar")) {
mergedFlavour.setApplicationId(mergedFlavour.getApplicationId() + ".foobar")
}
}