如何将Espresso UI测试编译成发布版?

5
我正在尝试将Espresso测试添加到一个发布版APK中。在我们的情况下,我们必须对实际发布内容进行测试,因此UI测试必须包含在发布版中。
所以我的主要问题是:如何最好地完成此操作?目前在互联网上的研究没有给我任何结果。
我已经尝试将构建脚本中的androidDebugTest更改为编译(compile)。
compile 'com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
}

并且,这里也有:

compile 'com.android.support.test.espresso:espresso-contrib:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'support-v4'
    exclude group: 'com.android.support', module: 'design'
    exclude group: 'com.android.support', module: 'recyclerview-v7'
}

但是在调用之后

./gradlew assembleRelease --info --debug

我收到了这个错误信息:
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesWithJarMergingForRelease'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: javax/annotation/Generated.class
...
BUILD FAILED

此外,通常有两个gradle任务assembleDebugassembleDebugAndroidTest与Espresso一起使用。但是对于发布版本构建,因为没有assembleReleaseAndroidTest任务,该怎么办呢?
提前感谢您的建议!

请查看:https://dev59.com/ZIrda4cB1Zd3GeqPJjpW - piotrek1543
1
@piotrek1543 我使用的是版本为2.14.1的gradlew,所以我认为提到的问题的解决方法在这里不适用。 - nepa
第一部分。创建了两个应用程序来执行仪器测试。被测试的应用程序(基本上是您的应用程序)。以及包含您的测试的单独应用程序。我认为“将测试包含到应用程序中”是不可能的。有关更多信息,请参见https://developer.android.com/studio/test/command-line.html“使用ADB运行测试”。第二部分。尝试通过ADB编译发布应用程序并启动测试,但我不确定它是否有效。可能需要调试版本的Espresso。第二部分只是一个猜测。 - MyDogTom
1个回答

5

你不能将测试编译到应用程序APK中,但可以针对发布版本进行测试。在您的情况下,发布结果将包括两个APK文件,一个是普通的应用程序APK文件,另一个是测试APK文件。请参见https://dev59.com/L2Ml5IYBdhLWcg3w3aI-#18064368


感谢您澄清我的误解。解决方案就是将测试构建类型更改为发布版。就这么简单... - nepa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接