目前还没有惯例,但是如何构建Android Studio的测试目录,现在Android testing fundamentals页面上的内容有所不同?
特别是,任何关于如何在Android Studio上运行jUnit测试的指针都会有所帮助,谢谢。
此外,使用android
工具现在并没有什么帮助,因为与Android Studio有些不同。
更新
我尝试设置测试文件夹并运行它,但我得到的是以下内容:
Running tests
Test running startedTest running failed: Unable to find instrumentation info for:ComponentInfo{<project-package-name>/android.test.InstrumentationTestRunner}
Empty test suite.
我还尝试在那里添加一个标准的AndroidManifest.xml文件用于测试。
答案 0 :(得分:59)
更新
从构建工具 19.1.0 开始,构建插件 0.11.0 build.gradle文件需要将 testPackageName 重命名为 testApplicationId (同样 packageName 应重命名为 androidId )
从构建插件0.9.0 instrumentTest 文件夹重命名为 androidTest 。这就是我们测试所需的全部内容。
以下是0.11。+ DSL
的示例android {
compileSdkVersion 19
buildToolsVersion "19.1.0"
defaultConfig {
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "1.0"
androidId "org.homelab.lab"
testApplicationId "org.homelab.lab.test"
testInstrumentationRunner "org.homelab.lab.test.Runner"
}
...
}
GOTCHAS :如果您的构建文件包含 testPackageName 和 testInstrumentationRunner 的定义,请将其删除
对于0.5.0版本 - 0.8。+
Android Studio使用Gradle插件版本0.5。+遵循Gradle SourceDir原则。
如何使其发挥作用:
1.update SDK
2.安装或更新Gradle到1.6(报告1.7的问题)或坚持使用gradle包装器
3.不要使用Android Studio运行检测任务,请使用gradle命令
gradle connectedCheck
4.不要使用相同的包进行测试和主apk 5.使用浏览器检查结果
<project>/build/reports/instrumentTests/index.html
陷阱:
如果测试包和主包相同,则可能会创建空的TestSuite。结果具有误导性,因为Gradle报告没有问题,但报告显示没有类已经过测试。
修改强>
以下是build.gradle的一部分,用于配置0.9.0之前所需的仪器测试:
android {
compileSdkVersion 14
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 17
testPackageName "org.homelab.lab.test"
testInstrumentationRunner "org.homelab.lab.test.Runner"
}
...
}
示例项目https://github.com/swavkulinski/android-studio-instrumentation-test
答案 1 :(得分:1)
现在,在Android Studio中,您可以通过简单地遵循将测试放在instrumentDirectory中的惯例来设置instrumentTests。 Gradle只需要知道你拥有的任何依赖项,在我的例子中是Robotium:
dependencies {
androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.0.+'
}
测试完成后,您将在GUI中显示结果,因此您根本不必使用任何命令行!您也可以右键单击JUnit测试上方的模块来运行所有JUnit测试。
答案 2 :(得分:1)
我也遇到过这个问题。 AndroidStudio仅构建主应用程序APK并将其安装到设备上,并且未通过以下消息进行测试:
测试运行startedTest运行失败:无法找到以下内容的检测信息:ComponentInfo {com.example.app.test / android.test.InstrumentationTestRunner}
空的测试套件。
然而,运行connectedCheck
Gradle目标是生成并安装两个APK并成功执行检测测试。事实证明,您可以通过运行installDebugAndroidTest
目标让Gradle单独组装和安装仪器APK。运行此目标后,AndroidStudio能够正常运行检测测试,甚至能够连接调试器!我猜你每次更改测试时都需要刷新仪器APK,但不是这样。
可以通过运行以下方式列出设备上安装的Instrumentation APK:
adb shell pm list instrumentation
答案 3 :(得分:0)
我有另一种方法来解决这个问题,如果你的理由只是运行配置的问题。
检查您的运行配置,如果您的项目配置是Android测试而不是Android应用程序然后您将面临
"Running tests
Test running startedTest running failed: Unable to find instrumentation info for:ComponentInfo{<project-package-name>/android.test.InstrumentationTestRunner}
Empty test suite."
因此,删除Android测试配置并为您的项目添加Android应用程序运行配置,您可以运行它。