我是使用calabash测试Android应用程序的新手。
我实施了一些测试来验证使用 Android Studio 3.0.1 和 Gradle 版本 2.3.3 实现的 apk,并且工作正常。当我尝试执行测试以验证使用 Gradle 版本 3.0.1 和 Kotlin(与 Kotlin 相同(创建的新应用程序时,会出现问题。执行命令:
bundle exec calabash-android run app-release.apk
我得到这个:
adb: failed to install /Users/sonia/Documents/calabash-test-android/app-release.apk: Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]
Scenario: As a valid user I can log into my app #features/my_first.feature:3
undefined method `chomp' for nil:NilClass (NoMethodError)
./features/support/app_installation_hooks.rb:18:in `Before'
Will not start test server because of previous failures. (RuntimeError)
./features/support/app_life_cycle_hooks.rb:5:in `Before'
When I press "Login" # calabash-android-0.9.2/lib/calabash-android/steps/press_button_steps.rb:17
Then I see "Welcome to coolest app ever" # calabash-android-0.9.2/lib/calabash-android/steps/assert_steps.rb:5
Failing Scenarios:
cucumber features/my_first.feature:3 # Scenario: As a valid user I can log into my app
1 scenario (1 failed)
2 steps (2 skipped)
0m4.553s
新应用中 AS 中定义的所有其他设置与旧应用相同。
有人知道 Gradle 版本是否有问题吗?
官方文档是这样说的
注意:运行按钮构建的APK版本为testOnly="true",这意味着APK只能通过adb(Android Studio使用(安装。如果您想要一个人们无需 adb 即可安装的可调试 APK,请选择您的调试变体,然后点击构建>构建 APK。
甚至我强迫在AndroidManifest中的应用程序标签中添加以下行.xml
android:testOnly="false"
Android Studio Run 按钮会覆盖我的设置。
我找到了一种阻止 Android Studio 将 testOnly 属性注入应用程序标签的工作方法。
添加以下行:
android.injected.testOnly=false
到 gradle.properties gradle 配置文件。
我也面临着同样的问题,并在明显的android:testOnly="false"
中尝试了android.injected.testOnly=false
。但它不起作用。
对我有用的简单解决方案是- 单击构建选项,然后选择构建APK。 单击右下角显示的对话框中查找Apk。它将找到您的未签名调试APK。
刚刚做了:
- 构建 -> 构建捆绑包/APK -> 构建 APK
- 导航到目录
build/outputs/apk/release
- 亚行安装 -r your_app.apk
似乎点击运行仍将添加标志,即使android:testOnly="false"
在您的 AndroidManifest.xml 文件中。
编辑运行配置,将部署选项从"默认 APK"更改为"来自应用捆绑包的 APK"。
即使没有设置 android.injected.testOnly=false 和 android:testOnly="false",它仍然有效。
尝试在AndroidManifest.xml中将android:testOnly="true"
更改为android:testOnly="false"
。您也可以将其删除,应该双向工作。
如果使用 SDK 的预览版本,则会强制testOnly
为 TRUE。只能通过adb -t
跳过此错误。 这会阻止在最终用户上发布具有预览版 SDK 的应用。
记得添加以下行:
android.injected.testOnly=false
在位于的gradle.properties
文件中
在[ROOT_PROJECT]/app/gradle.properties
(或您的主应用程序 Gradle 模块(而不是[ROOT_PROJECT]/gradle.properties
文件。否则它将不起作用。