Wtyczka Androida do obsługi Gradle może tworzyć raporty o pokryciu kodu, które śledzą, jaki procent kodu jest objęty testami. Na tej stronie opisano, jak włączyć raportowanie pokrycia i generować raporty.
Możesz generować raporty o pokryciu dla każdego typu testu (jednostkowego i instrumentacji) w przypadku każdego wariantu. Możesz też generować ujednolicone raporty o pokryciu dla różnych typów testów, modułów i wariantów kompilacji.
Włączanie pokrycia kodu
Pokrycie kodu musi być włączone przez ustawienie enableAndroidTestCoverage i enableUnitTestCoverage na true w plikach kompilacji na poziomie modułu dla każdego wariantu, dla którego chcesz otrzymywać raporty o pokryciu:
Kotlin
android { // ... buildTypes { debug { // Enable coverage for unit tests enableUnitTestCoverage = true // Enable coverage for instrumentation tests enableAndroidTestCoverage = true } } }
Dynamiczny
android { // ... buildTypes { debug { // Enable coverage for unit tests enableUnitTestCoverage true // Enable coverage for instrumentation tests enableAndroidTestCoverage true } } }
Zmień wersję Jacoco (opcjonalnie)
AGP automatycznie stosuje Jacoco, gdy włączysz pokrycie w modułach. Jeśli jednak musisz użyć konkretnej wersji Jacoco, możesz ją określić w pliku kompilacji na poziomie modułu:
Kotlin
android { testCoverage { jacocoVersion = "JACOCO_VERSION" } }
Dynamiczny
android { testCoverage { jacocoVersion = 'JACOCO_VERSION' } }
Generowanie raportów o zasięgu dla poszczególnych wariantów
Aby wygenerować raporty o pokryciu tylko dla testów jednostkowych lub tylko dla testów z instrumentacją w przypadku konkretnego wariantu, uruchom odpowiednie zadania.
| Typ testu | Polecenie | Lokalizacja raportu |
|---|---|---|
| Testy jednostkowe | ./gradlew :module-name:createVariantNameUnitTestCoverageReport |
path-to-your-project/module-name/build/reports/coverage/test/variant/index.html |
| Testy instrumentowane | ./gradlew :module-name:createVariantNameAndroidTestCoverageReport |
path-to-your-project/module-name/build/reports/coverage/androidTest/variant/connected/index.html |
Generowanie ujednoliconych raportów o pokryciu kodu
Możesz generować ujednolicone raporty o pokryciu kodu za pomocą zadań Gradle testAllSuites i testAllSuitesWithDependencies. Te zadania wygenerują jeden raport HTML, który konsoliduje dane o pokryciu z różnych typów testów (jednostkowych i instrumentacyjnych), modułów i wariantów kompilacji. Zapewnia to kompleksowy widok pokrycia kodu projektu w jednym panelu.
Wymagania wstępne
- Wtyczka Androida do obsługi Gradle w wersji 9.5.0-alpha05 lub nowszej
- Włączanie pokrycia kodu
Aby wygenerować ujednolicony raport, uruchom w wierszu poleceń jedno z tych zadań:
| Zakres ochrony | Polecenie | Opis | Lokalizacja raportu |
|---|---|---|---|
| Bieżący moduł | ./gradlew :module-name:testAllSuites --continue |
Testuje wszystkie pakiety testów i generuje ujednolicony raport o pokryciu dla bieżącego modułu, scalając dane ze wszystkich typów testów. | path-to-your-project/module-name/build/reports/testAllSuites/coverage-report/ |
| Bieżący moduł i zależności | ./gradlew :module-name:testAllSuitesWithDependencies --continue |
Testuje wszystkie zestawy testów i generuje ujednolicony raport o pokryciu dla bieżącego modułu i wszystkich jego zależności. To zadanie jest dostępne w przypadku modułów aplikacji i modułów biblioteki z włączoną publikacją. | path-to-your-project/module-name/build/reports/testAllSuitesWithDependencies/coverage-report/ |
Wygenerowana strona docelowa raportu HTML zawiera ogólne podsumowanie wszystkich modułów. Możesz przechodzić od modułu do pakietu, od pakietu do klasy i od klasy do pliku źródłowego. Kliknij dowolny plik, aby zobaczyć kod z wyróżnionym pokryciem linii i gałęzi:
- Zielony: linie objęte testem.
- Czerwony: wiersze nieobjęte testem.
- żółty – częściowe pokrycie (brak niektórych instrukcji lub gałęzi);
Używanie pokrycia kodu na urządzeniu w przypadku testów z instrumentacją
Domyślnie wtyczka Androida do obsługi Gradle mierzy pokrycie testów z instrumentacją, instrumentując klasy aplikacji za pomocą JaCoCo podczas kompilowania aplikacji. Od wersji 9.6.0-alpha01 wtyczki Androida do obsługi Gradle możesz zamiast tego używać instrumentacji na urządzeniu, która instrumentuje klasy aplikacji na urządzeniu testowym podczas wykonywania testów. Więcej informacji znajdziesz w artykule Wyświetlanie raportów o pokryciu kodu (z agentem na urządzeniu).