我是新手使用calabash来测试Android应用程序。
我实施了一些测试来验证用Android Studio 3.0.1和Gradle版本2.3.3实现的apk,并且工作正常。 当我尝试执行测试以验证使用Gradle版本3.0.1和Kotlin(相同的AS)创建的新应用程序时,会出现问题。执行命令:
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版本是否有问题?
答案 0 :(得分:6)
注意:“运行”按钮使用testOnly =“true”构建APK,这意味着APK只能通过adb(Android Studio使用)安装。如果您想要一个可以在没有adb的情况下安装的可调试APK,请选择您的调试版本,然后单击Build>建立APK(s)。
即使我强行将以下行添加到AndroidManifest.xml中的应用程序标记
<s:property>
Android Studio Run按钮会覆盖我的设置。
我找到了一种工作方法来阻止Android Studio将testOnly属性注入应用程序标记。
添加以下行:
android:testOnly="false"
到项目中的gradle.properties gradle配置文件。
答案 1 :(得分:0)
尝试在AndroidManifest.xml中将android:testOnly="true"
更改为android:testOnly="false"
。你也可以删除它,应该双向工作。
答案 2 :(得分:0)
我也遇到了同样的问题,并且在清单android.injected.testOnly=false
中也尝试了android:testOnly="false"
。但这不起作用。
最适合我的简单解决方案是-单击“生成”选项,然后选择“生成APK”。单击出现在右下角的对话框中的apk。它将找到您未签名的调试APK。
答案 3 :(得分:0)
就这样:
build/outputs/apk/release
即使android:testOnly="false"
位于您的AndroidManifest.xml文件中,看来运行仍会添加该标志。
答案 4 :(得分:0)
如果使用SDK的预览版,它将强制testOnly
为TRUE。只有adb -t
可以跳过此错误。这会阻止带有预览SDK的应用在最终用户上发布。