testWidgets
- Flutter kursu
- İleri seviye
- Ders 62/69
- 4 dk
testWidgets ile widget render testi yazmayı öğrenirsin.
testWidgets
testWidgets, bir widget testi kaydeder. İçerisindeki WidgetTester ile pumpWidget çağırarak widget'ı render eder, expect ile doğrulama yaparsın. Test gövdesi async olur çünkü pumpWidget bir Future döner.
testWidgets('buton gosterilir', (tester) async {
await tester.pumpWidget(MaterialApp(home: MyButton()));
expect(find.byType(ElevatedButton), findsOneWidget);
});expect ve Matcher
expect, gerçek değeri beklenen değerle karşılaştırır. İlk parametre gerçek değer (genelde Finder), ikincisi bir Matcher'dır. findsOneWidget tek widget bulunduğunu, findsNothing hiç bulunmadığını, findsNWidgets(3) tam N tane bulunduğunu doğrular.
Uygulama Buton testi yaz
main içinde 'buton gosterilir' adlı bir testWidgets testi yaz. pumpWidget ile MaterialApp(home: ElevatedButton(onPressed: () {}, child: Text('Tikla'))) render et. find.byType(ElevatedButton) ve findsOneWidget ile doğrula. Son olarak 'test tanimlandi' yazdır.
Başlangıç kodu
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart';
void main() {
// 'buton gosterilir' adlı testWidgets testi yaz
// pumpWidget ile MaterialApp içinde ElevatedButton render et
// find.byType ile ElevatedButton bul ve findsOneWidget ile doğrula
// son olarak 'test tanimlandi' yazdir
}Örnek çözüm
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart';
void main() {
testWidgets('buton gosterilir', (tester) async {
await tester.pumpWidget(
MaterialApp(
home: ElevatedButton(
onPressed: () {},
child: const Text('Tikla'),
),
),
);
expect(find.byType(ElevatedButton), findsOneWidget);
});
print('test tanimlandi');
}Beklenen çıktı
test tanimlandi
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 pumpWidget çağrısının önünde neden await kullanılır?
- Çünkü void döner
- Çünkü Widget döner
- Çünkü int döner
- Çünkü Future döner ve bitmesini beklemek gerekir Doğru cevap
Açıklama: pumpWidget bir Future döndürür; render tamamlanana kadar beklemek için await kullanılır.
2 pumpWidget çağrısı
await tester.____(MaterialApp(home: MyButton()));
await tester.pumpWidget(MaterialApp(home: MyButton()));
Açıklama: WidgetTester.pumpWidget verilen widget'ı test ortamında render eder; pump ise bir frame ilerletir.
3 testWidgets eşleşmeleri
| Kavram | Anlamı |
|---|---|
testWidgets |
Widget testi kaydeder |
WidgetTester |
Test aracı |
pumpWidget |
Widget render eder |
expect |
Karşılaştırma yapar |