Flutter Entegrasyon Testi | 볼룸 1
5935 단어 dartflutterflutterdevtest
• 통합
• 단위
• 위젯
Unit ve Widget testleri, tek tek sınıfları, fonksiyonları veya widget'ları test etmek için kullanışlıdır. Ancak bir bütün olarak uygulamanın nasıl çalıştığını test etmezler veya gerçek bir cihazda çalışan bir uygulamanın performansını yakalayamazlar. Bu gibi durumlar için entegrasyon testleri kullanılır.
Entegrasyon testleri, SDK tarafından sağlanan integration_test paketi kullanılarak yazılır.
Uygulamanız için entegrasyon testi yazmak için öncelikle pubspec.yaml dosyasına aşağıdaki bağımlılıkları ekleyin
dev_dependencies:
integration_test:
sdk: flutter
flutter_test:
sdk: flutter
app_test.dart dosyasıyla integration_test adında yesni bir dizin oluşturun:
your_app/
lib/
main.dart
integration_test/
app_test.dart
Paketiniz aşağıdaki gibi bir yapıda olmalıdır.
lib/
...
integration_test/
foo_test.dart //test dosyalarınız..
bar_test.dart
test/
# Diğer unit testler buraya gelir.
test_driver/
integration_test.dart
Testleri çalıştırmak:
Entegrasyon testlerini çalıştırma süreci, test ettiğiniz platforma göre değişir. Bir mobil platforma veya web'e karşı test edebilirsiniz.
ㅏ. 모빌
Gerçek bir iOS/Android testlerinizi çaşıştırmak için önce cihazı bağlayın (veya emulator kullaın) ve projenin kökünden aşağıdaki komutu çalıştırın:
flutter test integration_test/app_test.dart
Veya tüm entegrasyon testlerinizi çalıştırmak istiyorsanız sadece dizini belirtin:
flutter test integration_test
Bu komut buz dizinde yer alan tüm entegrasyon testlerini çalıştırır.
비. 편물
Testlerinizi bir web tarayıcısında çalıştırmak istiyorsanız öncelikle ChromeDriver'ı indirin
Ardından aşağıdaki içeriklerle test_driver klasöründe
integration_test.dart
adlı bir dosya oluşturun:import 'package:integration_test/integration_test_driver.dart';
Future<void> main() => integrationDriver();
WebDriver'ı başlatın, örneğin:
chromedriver --port=4444
Projenin kökünden aşağıdaki komutu çalıştırın:
flutter drive \
--driver=test_driver/integration_test.dart \
--target=integration_test/app_test.dart \
-d web-server
스크린샷
Test sırasında belirli bir zamanda mobil cihazda veya Web tarayıcısında oluşturulan kullanıcı arayüzünün ekran görüntülerini almak için
integration_test
'ini kullanabilirsiniz. Bu özellik şu anda Android, iOS ve web'de desteklenmektedir.integration_test/screenshot_test.dart
void main() {
final binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized()
as IntegrationTestWidgetsFlutterBinding;
testWidgets('screenshot', (WidgetTester tester) async {
// Uygulamayı oluşturun.
app.main();
// Bu, ekran görüntüsünü almadan önce gereklidir (yalnızca Android).
await binding.convertFlutterSurfaceToImage();
await tester.pumpAndSettle();
await binding.takeScreenshot('screenshot-1');
});
}
Cihazdan ekran görüntüsünü almak için bir 드라이버 스크립트 kullanabilirsiniz. Bu şekilde, görüntüleri bilgisayarınızda yerel olarak saklayabilirsiniz. iOS'ta ekran görüntüsü Xcode test sonuçlarında da gözükür.
test_driver/integration_test.dart
import 'dart:io';
import 'package:integration_test/integration_test_driver_extended.dart';
Future<void> main() async {
await integrationDriver(
onScreenshot: (String screenshotName, List<int> screenshotBytes) async {
final File image = File('$screenshotName.png');
image.writeAsBytesSync(screenshotBytes);
// Ekran görüntüsü geçersizse false döndürür.
return true;
},
);
}
Bir grupta birden fazla testi birleştirmek
Birbiriyle ilişkili birkaç testiniz varsa, bunları test paketi tarafından sağlanan 그룹 fonksiyonunu kullanarak birleştirin.
import 'package:counter_app/counter.dart';
import 'package:test/test.dart';
void main() {
group('Counter', () {
test('value should start at 0', () {
expect(Counter().value, 0);
});
test('value should be incremented', () {
final counter = Counter();
counter.increment();
expect(counter.value, 1);
});
test('value should be decremented', () {
final counter = Counter();
counter.decrement();
expect(counter.value, -1);
});
});
}
Testleri bi terminalde çalıştırın
flutter test test/counter_test.dart
오늘은... :)
자원:
https://docs.flutter.dev/cookbook/testing
https://docs.flutter.dev/cookbook/testing/integration/introduction
https://github.com/flutter/flutter/tree/main/packages/integration_test
Reference
이 문제에 관하여(Flutter Entegrasyon Testi | 볼룸 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gulsenkeskin/flutter-entegrasyon-testi-47kh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)