-
3화. 플러터 통합테스트 찍먹Archiving/Flutter 2024. 1. 26. 17:50반응형
통합테스트를 진행하는 것을 통해 플러터 기초를 마무리 하려고 한다. 위젯 테스트와 큰 차이가 없다보니 간단하게 몇가지만 집고 넘어가려고 한다.
통합테스트를 위해서는 integration_test 패키지를 추가하면 된다. 플러터에서는 기존에 flutter_driver 패키지를 사용하라고 권장했는데 이제 integration_test 패키지로 전환됐고 마이그레이션을 하라고 말하고 있다.
flutter pub add 'dev:integration_test:{"sdk":"flutter"}'
pubspec.yaml 에 보면 dev_dependencies 밑으로 integration_test 가 추가된 것을 볼 수 있다. 기존에 존재하던 flutter_drirver는 과감하게 지워주자. 모든걸 다 끝냈다면 pub get 을 통해 새로운 패키지를 동기화 한다.
폴더 구조 및 규칙
테스트를 위해서는 test 폴더를 둬야 했는데 통합테스트는 integration_test 폴더가 필요하다. 폴더를 추가해준다.
lib/ integration_test/ integration_test.dart test/ widget_test.dart
이런식으로 폴더 구조를 가져가면 된다. test 라는 것을 인식하기 위해서는 "파일이름_test.dart" 로 파일을 만들어야 한다.
통합 테스트 구동하기
통합 테스트를 구동한다는 뜻은 실제 구동 환경에서의 테스트를 말한다. 지원되는 플랫폼 Windows, macOS, Linux, Web, Android, iOS 에서 실제 버튼을 누르고 서버에서 데이터를 받아오는 것을 테스트 할 것이다. 중요한 부분은 각 플랫폼 위에서 돌고 있는 플러터 통합 테스트를 진행한다는 점이다. 네이티브라고 말을 하는 플랫폼 자체에서 지원하는 통합테스트 역시 사용가능한데 이는 각 플랫폼에서 지원하는 라이브러리를 사용해야 한다. 이런 경우는 보통 플러터를 기존 네이티브와 병행해서 사용하려고 할 때 사용하게 될 것이다.
import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:how_to/main.dart'; import 'package:integration_test/integration_test.dart'; void main() { testWidgets('tap on the floating action button, verify counter', (tester) async { // Load app widget. await tester.pumpWidget(const MyApp()); // Verify the counter starts at 0. expect(find.text('0'), findsOneWidget); // Finds the floating action button to tap on. final fab = find.byKey(const Key('increment')); // Emulate a tap on the floating action button. await tester.tap(fab); // Trigger a frame. await tester.pumpAndSettle(); // Verify the counter increments by 1. expect(find.text('0'), findsNothing); expect(find.text('1'), findsOneWidget); }); }
플러터 공식 문서에서 제공되는 샘플 코드로 2화를 보고 오신 분이라면 너무나 편안하게 읽어 낼 수 있을 것이다. 혹시라도 안보고 오셨다면 지금이라도 보고 오자. 위젯 테스트와 차이가 있다면 에뮬레이터나 실제 연결된 기기가 있어야 한다는 점이다. 웹으로 테스트를 실행한다면 chromDriver 를 구동하여 테스트를 진행 할 수 있다.
찰나의 순간 마무리가 되어 무슨 일이 일어났는지 의아하겠지만 플로팅 버튼이 눌렸고 숫자가 증가 하는 실제로 동작하는 모습이 보일 것이다. 이걸 실행해봐야 통합테스트가 뭘 의미하는지를 알 수 있을 것이다.
결론
통합테스트는 사실 이렇게 간단하지 않다. 3화까지는 단순히 플러터에서 뭘 할 수 있는지 체험해봤을 뿐이다. 다만 이제까지의 테스트 코드들을 짜오면서 이만큼 UI 테스트가 편한건 처음이라고 말할 수 있을 정도로 설계가 잘 되어있다. 그러니 너무 겁먹지 말고 같이 시작해보자.
다음 글부터는 실제로 TDD를 하면서 개발을 해보는 내용을 작성할 예정이다. 많은 관심 부탁드린다.
반응형'Archiving > Flutter' 카테고리의 다른 글
[마테리얼위젯] 날짜 선택 (DatePicker) (0) 2024.02.07 4화. AI를 이용한 통합테스트 코드 작성 (4) 2024.01.30 2화. 위젯도 테스트 코드부터 (2) 2024.01.25 1화. 항상 시작합니다. TDD (2) 2024.01.23 [Flutter more:] Navigator 는 페이지 스택을 어떻게 관리하는가? (0) 2024.01.18