Coverage
- Dart kursu
- Uzman
- Ders 40/47
- 5 dk
Test coverage ölçümünü öğrenirsin.
Coverage
Coverage, testlerin kodun ne kadarını exercise ettiğini ölçer. dart test --coverage=coverage bir LCOV raporu üretir; genhtml bunu HTML'e çevirir.
İki tür: satır coverage'i (çalıştırılan satır sayısı) ve dal coverage'i (if/else dallarından kaç alındı). %100 satır, %100 dal anlamına gelmez.
Coverage, test kalıtesinin bir göstergesidir ama tek başına yeterli değildir. Yüksek coverage ile bile kenar durumlar test edilmemiş olabilir. Coverage tabloyu gösterir; kalıteyi garanti etmez.
Satır vs dal coverage
Satır coverage'i, çalıştırılan kaynak satırların oranını verir. Bir if satırı, koşul doğru veya yanlış olsa da 'çalıştırılmış' sayılır.
Dal coverage'i, if'in her iki kolunu da sınar. if (x) { a(); } else { b(); } için hem a() hem b() çağrılmalıdır.
Bu yüzden dal coverage daha sıkıdır. %90 satır coverage olabilir ama dal coverage %60'ta kalabilir. Her ikisini de izlemek gerekir.
Uygulama CoverageReport tanımla
Bir CoverageReport sınıfı tanımla: final int covered; final int total; CoverageReport(this.covered, this.total); double get percent => total == 0 ? 0 : (covered / total) * 100;. main içinde final report = CoverageReport(85, 100); yarat ve print('${report.percent.toStringAsFixed(0)}%'); ekle.
Başlangıç kodu
void main() {
// CoverageReport sınıfını tanımla (covered, total alanları; percent getter)
// bir report yarat; percent'i yüzde olarak yazdır
}Örnek çözüm
class CoverageReport {
final int covered;
final int total;
CoverageReport(this.covered, this.total);
double get percent => total == 0 ? 0 : (covered / total) * 100;
}
void main() {
final report = CoverageReport(85, 100);
print('${report.percent.toStringAsFixed(0)}%');
}Beklenen çıktı
85%
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 dart test --coverage ne üretir?
- LCOV/coverage verisi Doğru cevap
- Çalıştırılabilir dosya
- HTML raporu
- Test dosyası
Açıklama: dart test --coverage LCOV biçiminde veri üretir.
2 Coverage parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
--coverage |
Bayrak |
lcov.info |
Veri dosyası |
genhtml |
HTML üretici |
100% |
Tam coverage |
3 Coverage oranı
var lineCoverage = ____;
var lineCoverage = 0.85;
Açıklama: coverage 0-1 arası bir orandır.