| # Testing |
| |
| ## Types of tests |
| |
| Multiple Dart test targets are available: |
| |
| - [dart_fuchsia_test] runs the test as a package on a fuchsia device. This must |
| be used if there is anything fuchsia specific being used like fidl. It is run |
| with `fx test`. |
| - [dart_test] runs unit tests that can be run on the host or on a fuchsia |
| device. The dart:ui package is not made available to these tests. The test can |
| be run with `fx tests --host`. |
| - [flutter_test] is just like dart_test except the dart:ui package is made |
| available to it, so it can test widget code. |
| |
| Note that in order to be built and run on bots, the test targets need to be |
| included in the packages that are configured to run there. For example, in |
| topaz this can be achieved by adding those tests to `//topaz/packages/tests`. |
| |
| ## Code coverage |
| |
| To generate an HTML coverage report from all `dart_test`s, first build them |
| with `fx build` and then run: |
| |
| ```sh |
| scripts/dart/report_coverage.py --report-dir ... |
| ``` |
| |
| This script runs all of the dart tests in your `<out>/host_tests/` dir with |
| coverage enabled. Under the hood, each test uses the coverage collection support |
| from [flutter]( |
| https://github.com/flutter/flutter/wiki/Test-coverage-for-package:flutter). |
| |
| The basic logic is: |
| |
| ``` |
| for test in host_tests: |
| covered_lines += lines in test's package that were covered by test |
| total_lines += all lines in test's package |
| ``` |
| |
| So if there are packages that have no tests at all, they won't be considered in |
| the denominator of the report, which can give you a misleadingly high coverage |
| number. |
| |
| [dart_fuchsia_test]: https://fuchsia.googlesource.com/topaz/+/HEAD/runtime/dart/dart_fuchsia_test.gni |
| [dart_test]: /build/dart/test.gni |
| [flutter_test]: https://fuchsia.googlesource.com/topaz/+/HEAD/runtime/dart/flutter_test.gni |