Golden test
- Dart kursu
- Uzman
- Ders 41/47
- 5 dk
Golden test ve snapshot öğrenirsin.
Golden test
Golden test, çıktıyı kaydedilmiş bir 'altın' (golden) dosyayla karşılaştırır. Çıktı değişirse test başarısız olur. matchesGoldenFile('goldens/foo.png') ile kullanılır.
İlk çalıştırmada altın dosya yoktur; --update-goldens bayrağıyla oluşturulur. Sonraki çalıştırmalarda çıktı bu dosyayla karşılaştırılır.
Avantaj: karmaşık çıktıları (görüntü, JSON, metin) tek seferde doğrular. Dezavantaj: bilinçli değişiklikte altın dosyayı yenilemek gerekir.
Altın dosyayı yenileme
Bilinçli bir değişiklikte (yeni tasarım, yeni alan) çıktı değişir. Bu durumda dart test --update-goldens çalıştırılarak altın dosya yenilenir.
Yenilemeden önce diff (fark) dikkatle incelenmelidir. Yanlışlıkla değişen bir çıktı, fark görülmeden onaylanabilir.
Altın dosyalar versiyon kontrolüne (git) işlenir. Böylece takım, aynı altın dosyaları paylaşır ve değişiklikler gözden geçirilir.
Uygulama GoldenComparator tanımla
Bir GoldenComparator sınıfı tanımla: final String golden; GoldenComparator(this.golden); String compare(String actual) { return actual == golden ? 'PASS: matches golden' : 'FAIL: golden mismatch'; }. main içinde final comparator = GoldenComparator('Hello, Ayşe!'); yarat ve print(comparator.compare('Hello, Ayşe!')); ekle.
Başlangıç kodu
void main() {
// GoldenComparator sınıfını tanımla (golden alanı; compare metodu)
// bir comparator yarat; aynı değeri compare et; yazdır
}Örnek çözüm
class GoldenComparator {
final String golden;
GoldenComparator(this.golden);
String compare(String actual) {
return actual == golden ? 'PASS: matches golden' : 'FAIL: golden mismatch';
}
}
void main() {
final comparator = GoldenComparator('Hello, Ayşe!');
print(comparator.compare('Hello, Ayşe!'));
}Beklenen çıktı
PASS: matches golden
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 matchesGoldenFile çağrısı
expect(widget, ____('goldens/widget.json'));
expect(widget, matchesGoldenFile('goldens/widget.json'));
Açıklama: matchesGoldenFile çıktıyı altın dosyayla karşılaştırır.
2 Golden test parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
matchesGoldenFile |
Karşılaştırma |
golden |
Referans dosya |
--update-goldens |
Yenileme |
snapshot |
Anlık görüntü |
3 Golden test ne zaman başarısız olur?
- Test yavaşsa
- Çıktı altın dosyadan farklıysa Doğru cevap
- Kod derlenmezse
- Import eksikse
Açıklama: çıktı altın dosyadan farklıysa test başarısız olur.