什么是 gradlew 任务 assembleAndroidTest 以及 Android 中的测试应用程序是什么?

evi*_*ing 7 android react-native react-native-android detox

我已经在 React-Native 中编码了一段时间,当我需要编写一些原生 Android 代码时。但是,直到我开始使用使用此特定 gradle 任务的库之前,我才看到此 gradle 任务。

该库是一个端到端测试库(detox),它使用此命令"cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd .."来构建.apk将在自动化 e2e 测试中使用的 android 。实际上,它构建了两个 apk,一个是 debug,一个是 AndroidTest,但我不知道后者来自哪里,配置在哪里,或者文档在哪里。

我搜索了一个小时,除了这个非常简短的描述之外没有找到任何东西: assembleAndroidTest - Assembles all the Test applications.

什么是测试应用程序?

另外,什么是-DtestBuildType=debug

odi*_*ity 7

当您运行 UI 测试(也称为插桩测试)时,会构建两个 apk。一个是您的应用程序的 apk,您可能熟悉的 apk,以及包含所有 UI 测试的第二个 apk。运行测试时,两个 apk 都会上传到设备。assembleAndroidTest是构建第二个测试 apk 的 gradle 命令。默认情况下,assembleAndroidTest将使用调试构建类型构建测试 apk。您可以通过将其添加到 build.gradle 文件来更改构建类型:

android {
  testBuildType "release"
  ..
Run Code Online (Sandbox Code Playgroud)

Detox 对参数所做的事情-DtestBuildType=debug是更进一步,并允许您通过 gradle 任务动态指定测试 apk 构建类型。他们通过将这个添加到他们的 build.gradle 文件来做到这一点:

testBuildType System.getProperty('testBuildType', 'debug')
Run Code Online (Sandbox Code Playgroud)

您可能想要这样做的一个潜在原因是,如果您想在发布构建类型上运行您的测试,以确保测试仍然通过 proguard。所以它看起来像:

./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release && cd .."
Run Code Online (Sandbox Code Playgroud)