我正在尝试使用此文件config.yml在Circle CI中生成测试覆盖率,但是构建失败,并且显示无连接的设备.
以下是在Circle CI上生成的错误:
而且据我了解,Circle CI目前不支持仿真器.
以下是我的config.yml文件:
version: 2jobs: build: working_directory: ~/ConvergeLevelApp docker: - image: circleci/androID:API-25-Alpha environment: JVM_OPTS: -Xmx3200m CC_TEST_REPORTER_ID: 403xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ADB_INSTALL_TIMEOUT: 60 steps: - checkout - restore_cache: key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }} - run: name: Download DependencIEs command: ./gradlew androIDDependencIEs - save_cache: paths: - ~/.gradle key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }} - run: name: Setup Code climate test-reporter command: | curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter chmod +x ./cc-test-reporter - run: name: Run Tests command: ./gradlew lint test - store_artifacts: path: app/build/reports destination: reports - store_test_results: path: app/build/test-results - run: name: Generate JaCoCo report command: ./gradlew jacocoTestReport - run: name: Upload coverage to code climate command: | export JACOCO_SOURCE_PATH=app/src/main/java ./cc-test-reporter format-coverage app/build/reports/coverage/deBUG/report.xml -t jacoco ./cc-test-reporter upload-coverage
解决方法:
CircleCI does not currently support AndroID模拟器.根据我的经验,即使有一个可行的方法,也不会长期有效. (链接从2018年1月17日开始).
话虽如此,仍然可以通过使用Firebase Test Lab来收集集成测试覆盖率的一个好方法.
关于如何实际使用CircleCI and Firebase Test Lab运行测试的资源多种多样.
设置项目以在Firebase Test Lab上运行测试后,您应该可以按照以下方式编辑项目:
>您将需要更新config.yml文件的Firebase测试任务.注意,我使用CIRCLE_BRANCH和CIRCLE_BUILD_NUM来确保结果在每次构建时都保存在结果存储区中的特定位置.您将要用实际的存储区位置替换YOUR_LOCATION,并用运行Firebase测试的设备替换DEVICE.
您还将需要用用于运行仪器测试的Jacoco命令替换LOCATION_OF_ANDROID_TESTS(您可以通过在本地运行仪器测试然后寻找此名称来找到它.)gsutil命令被设置为从存储桶中提取覆盖文件它们被流式传输,然后删除存储桶中的文件夹.如果使用gsutil -m -o命令,则可以更快地完成此 *** 作.
值得一提的是,这将使构建失败的结果保留在存储桶中(因此,您可能需要移出该命令,以确保存储桶中不会出现数据过多的情况).
sudo pip install -U crcmodsudo gcloud auth activate-service-account --key-file=${HOME}/gcloud-service-key.Jsonsudo gcloud --quIEt config set project ${Google_PROJECT_ID}sudo gcloud firebase test androID run \ --type instrumentation \ --app PATH_TO_APK \ --test PATH_TO_TEST_APK \ --device DEVICE_OF_YOUR_CHOOSING \ --environment-variables coverage=true,coveragefile="/sdcard/coverage.ec" \ --directorIEs-to-pull=/sdcard \ --results-dir=${CIRCLE_BRANCH}_${CIRCLE_BUILD_NUM}sudo gsutil -m cp -r -U gs://test-lab-YOUR_LOCATION/${CIRCLE_BRANCH}_${CIRCLE_BUILD_NUM}/DEVICE/artifacts/coverage.ec app/build/outputs/code_coverage/LOCATION_OF_ANDROID_TESTS/connected/coverage.ecsudo gsutil rm -r gs://test-lab-YOUR_LOCATION/${CIRCLE_BRANCH}_${CIRCLE_BUILD_NUM}
>在集成测试运行之后(或之前,您可以选择),您将需要运行单元测试.
>单元测试运行后,您将需要运行合并报告Jacoco任务,以将单元测试覆盖率报告与集成测试覆盖率报告合并.
最后说明:为了在Firebase上将报告输出到测试设备上,我必须添加一个包含WRITE_EXTERNAL_STORAGE权限的调试清单.这是因为我的应用程序未在发行版本中使用此权限.如果您的应用程序已在使用此权限,则无需添加调试清单.
<uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" />
总结 以上是内存溢出为你收集整理的java-使用Jacoco和Circle CI生成测试覆盖率失败全部内容,希望文章能够帮你解决java-使用Jacoco和Circle CI生成测试覆盖率失败所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)