Выполнить инструментированный тест для библиотеки Android с Firebase Test Lab? - PullRequest
1 голос
/ 20 января 2020

Я работаю над CircleCI и пытаюсь выполнить Инструментированные тесты для библиотеки Android с Firebase Test Lab (потому что Android Виртуальные устройства не поддерживаются CircleCI).

My Instrumented Test работает как шарм в Android Studio, но когда он выполняется, он находится в Firebase Test Lab, он изо всех сил!

На самом деле главная проблема в том, что когда я собираю свою библиотеку, у меня есть нет файла APK в выходных данных, но вместо этого файл AAR!

$ ./gradlew assembleDebug
$ ./gradlew assembleDebugAndroidTest

Итак, есть ли у вас какие-либо предложения по запуску Instrumented Test для библиотеки Android с Firebase Test Lab?

Здесь мой команды, которые не работают (генерируемые fastlane):

$  gcloud firebase test android run \
   --type instrumentation \ 
   --app lib/build/outputs/apk/androidTest/debug/lib-debug-androidTest.apk \
   --test lib/build/outputs/apk/androidTest/debug/lib-debug-androidTest.apk \
   --device model=walleye,version=28,locale=en_US,orientation=portrait \
   --timeout 30m
$ gcloud firebase test android run \
  --type instrumentation \
  --test lib/build/outputs/apk/androidTest/debug/lib-debug-androidTest.apk \
  --device model=walleye,version=28,locale=en_US,orientation=portrait \
  --timeout 30m

1 Ответ

1 голос
/ 20 января 2020

Благодаря @DougStevenson я просто добавляю папку подпроекта testlab / в свой библиотечный проект с очень простым Android приложением, которое реализует мою библиотеку. Файл build.gradle ниже:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 29
    buildToolsVersion "29.0.0"
    defaultConfig {
        applicationId "com.soclip.library.analytics"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
    }
}
dependencies {
    // Include the Android library (aar file)
    implementation fileTree(dir: '../../lib/build/outputs/aar/', include: ['*.aar'])
}

Затем в моем файле fastlane / Fastfile я скомпилирую "test APK" перед запуском моих Инструментированных тестов:

default_platform(:android)
platform :android do

  desc "Assemble Library"
    lane :assemble_library do
      gradle(task: "assembleDebug")
  end

  desc "Assemble App (for Firebase Test Lab)"
    lane :assemble_application do
      gradle(task: "assembleDebug", project_dir: "testlab/")
  end

  desc "Assemble Android Test"
    lane :assemble_test_application do
      gradle(task: "assembleDebugAndroidTest")
  end

  desc "Assemble Build and Test Application"
  lane :assemble do
    assemble_library
    assemble_application
    assemble_test_application
  end

  desc "Run instrumentation tests in Firebase Test Lab"
  lane :instrumentation_tests_testlab do
    assemble
    run_tests_firebase_testlab(
      project_id: "my-firebase-project-id",
      app_apk: "testlab/app/build/outputs/apk/debug/app-debug.apk",
      android_test_apk: "lib/build/outputs/apk/androidTest/debug/lib-debug-androidTest.apk",
      devices: [
        {
          model: "walleye",
          version: "28"
        }
      ],
      delete_firebase_files: true)
  end

end

...