These are instructions for collecting code coverage data for android instrumentation and JUnit tests.
In order to use JaCoCo code coverage, we need to create build time pre-instrumented class files and runtime .exec files. Then we need to process them using the build/android/generate_jacoco_report.py script.
target_os = "android" use_jacoco_coverage = true
Now when building, pre-instrumented files will be created in the build directory.
Run tests, with option --coverage-dir <directory>
, to specify where to save the .exec file. For example, you can run chrome JUnit tests: out/Debug/bin/run_chrome_junit_tests --coverage-dir /tmp/coverage
.
The coverage results of JUnit and instrumentation tests will be merged automatically if they are in the same directory.
If generating coverage and there are duplicate class files, as can happen when generating coverage for downstream targets, use the --include-substr-filter option to choose jars in the desired directory.
generate_jacoco_report.py
, for example:build/android/generate_jacoco_report.py \ --format html \ --output-dir /tmp/coverage_report/ \ --coverage-dir /tmp/coverage/ \ --sources-json-dir out/Debug/ \
Then an index.html containing coverage info will be created in output directory:
[INFO] Loading execution data file /tmp/coverage/testTitle.exec. [INFO] Loading execution data file /tmp/coverage/testSelected.exec. [INFO] Loading execution data file /tmp/coverage/testClickToSelect.exec. [INFO] Loading execution data file /tmp/coverage/testClickToClose.exec. [INFO] Loading execution data file /tmp/coverage/testThumbnail.exec. [INFO] Analyzing 58 classes.
--output-file
instead of --output-dir
since only one file will be generated as XML or CSV report.build/android/generate_jacoco_report.py \ --format xml \ --output-file /tmp/coverage_report/report.xml \ --coverage-dir /tmp/coverage/ \ --sources-json-dir out/Debug/ \
or
build/android/generate_jacoco_report.py \ --format csv \ --output-file /tmp/coverage_report/report.csv \ --coverage-dir /tmp/coverage/ \ --sources-json-dir out/Debug/ \