플러터 앱을 테스트할 때 플러그인으로 인한 크래시를 방지하는 방법을 알아보려면 이 문서를 계속 읽으세요. 거의 모든 Flutter 플러그인은 두 부분으로 구성되어 있습니다:여러분의 코드가 호출하는 API를 제공하는 Dart 코드해당 API를 구현하는 Kotlin이나 Swift 같은 플랫폼별(또는 "호스트") 언어로 작성된 코드 사실, 이 네이티브(또는 호스트) 언어 코드가 일반 패키지와 플러그인 패키지를 구분하는 요소입니다. 플러그인의 호스트 부분을 빌드하고 등록하는 과정은 Flutter 애플리케이션 빌드 프로세스의 일부이므로, 플러그인은 여러분의 코드가 애플리케이션 안에서 실행될 때만 작동합니다. 예를 들어 flutter run으로 실행하거나 통합 테스트를 실행할 때 그렇습니다. Dart 단위 테스트나..
모든 일반적인 Flutter 테스트 유형은 플러그인 패키지에도 적용되지만, 플러그인은 네이티브 코드를 포함하므로 모든 기능을 테스트하려면 다른 종류의 테스트도 필요할 수 있습니다. 플러그인 테스트 유형이러한 각 테스트 유형의 예제를 보려면 플러그인 템플릿으로 새 플러그인을 생성하고 지정된 디렉토리를 확인하세요. Dart 단위 테스트 및 위젯 테스트이 테스트들은 플러그인의 Dart 부분을 일반 Dart 코드처럼 테스트할 수 있게 해줍니다. 그러나 플러그인의 네이티브 코드는 로드되지 않기 때문에 플랫폼 채널 호출은 테스트에서 모킹해야 합니다. Dart 통합 테스트통합 테스트는 Flutter 애플리케이션(예제 앱)의 컨텍스트에서 실행되므로 Dart와 네이티브 코드 모두를 테스트할 수 있으며, 이 둘 사이의 상..
모바일 앱에서 성능은 사용자 경험에 매우 중요합니다. 사용자는 앱이 끊김이나 프레임 누락 없이 부드러운 스크롤과 의미 있는 애니메이션을 제공하길 기대합니다. 다양한 기기에서 앱이 끊김(jank) 없이 잘 동작하는지 어떻게 확인할 수 있을까요?두 가지 방법이 있습니다. 첫 번째는 서로 다른 기기에서 앱을 수동으로 테스트하는 방법입니다. 이 방법은 앱이 작을 경우에는 효과적일 수 있지만, 앱이 커질수록 번거로워집니다. 두 번째는 특정 작업을 수행하면서 성능 타임라인을 기록하는 통합 테스트를 실행하는 것입니다. 그런 다음 결과를 검사하여 앱의 특정 섹션을 개선해야 하는지 확인할 수 있습니다. 이 레시피에서는 특정 작업을 수행하면서 성능 타임라인을 기록하고, 그 결과 요약을 로컬 파일에 저장하는 테스트를 작성하..
이 가이드는 Flutter 앱에서 통합 테스트를 실행하는 방법을 설명합니다. 이를 통해 다음을 수행하는 방법을 배울 수 있습니다:통합 테스트 설정하기앱이 특정 텍스트를 표시하는지 확인하기특정 위젯을 탭하기통합 테스트 실행하기 이 가이드에서는 Flutter에 포함된 counter_app 프로젝트와 Flutter의 integration_test 패키지를 참조합니다.integration_test 패키지를 사용하면 다음과 같은 작업이 가능합니다:flutter drive 명령어를 사용해 실제 기기나 에뮬레이터에서 테스트 실행하기다양한 기기에서 자동 테스트를 실행하기 위해 Firebase Test Lab에서 실행하기flutter_test API를 사용하여 위젯 테스트와 유사한 스타일로 테스트 작성하기 테스트할 새 ..
단위 테스트(Unit tests)와 위젯 테스트(Widget tests)는 개별 클래스, 함수 또는 위젯을 검증합니다. 하지만 이러한 테스트는 각각의 구성 요소가 전체 애플리케이션 내에서 어떻게 함께 작동하는지를 검증하지 않으며, 실제 기기에서 앱이 실행될 때의 성능도 측정하지 않습니다. 이러한 작업을 수행하려면 통합 테스트(Integration tests)를 사용해야 합니다. 통합 테스트는 전체 앱의 동작을 검증합니다. 이 테스트는 엔드 투 엔드 테스트(end-to-end testing) 또는 GUI 테스트(GUI testing)라고도 불릴 수 있습니다. 통합 테스트를 위해서 Flutter SDK에는 integration_test 패키지가 포함되어 있습니다. 용어 정의host machine (호스트 머..
많은 위젯들은 정보를 표시할 뿐만 아니라 사용자 상호작용에도 반응합니다. 여기에는 탭할 수 있는 버튼이나 텍스트를 입력할 수 있는 TextField 같은 위젯들이 포함됩니다. 이러한 상호작용을 테스트하기 위해서는 테스트 환경에서 이를 시뮬레이션할 수 있는 방법이 필요합니다. 이를 위해 WidgetTester 라이브러리를 사용합니다. WidgetTester는 다음과 같은 메서드를 제공합니다:enterText()tap()drag() 많은 경우 사용자 상호작용은 앱의 상태를 업데이트합니다. 테스트 환경에서는 상태가 변경되더라도 Flutter가 자동으로 위젯을 다시 빌드하지 않습니다. 사용자 상호작용을 시뮬레이션한 후 위젯 트리를 다시 빌드하기 위해서는 WidgetTester가 제공하는 pump() 또는 pum..
많은 앱들은 이메일 클라이언트나 음악 앱 등처럼 콘텐츠 목록을 보여줍니다. 위젯 테스트를 통해 목록에 예상된 콘텐츠가 포함되어 있는지 확인하려면, 특정 항목을 찾기 위해 목록을 스크롤할 수 있어야 합니다. 통합 테스트(integration test)에서 목록을 스크롤하려면, flutter_test 패키지에 포함된 WidgetTester 클래스가 제공하는 메서드를 사용하세요. 이 레시피에서는 목록 항목을 스크롤하여 특정 위젯이 표시되는지 확인하는 방법과 다양한 접근 방식의 장단점을 알아봅니다. 이 레시피는 다음과 같은 단계로 구성됩니다:1. 항목 목록이 있는 앱 만들기2. 목록을 스크롤하는 테스트 작성하기3. 테스트 실행하기 1. 항목 목록이 있는 앱 만들기이 레시피는 많은 항목이 있는 긴 목록을 보여주는..
위젯 클래스를 테스트하려면, Flutter SDK에 포함되어 있는 flutter_test 패키지에서 제공하는 몇 가지 추가 도구가 필요합니다. flutter_test 패키지는 위젯 테스트를 위해 다음과 같은 도구들을 제공합니다:WidgetTester는 테스트 환경에서 위젯을 빌드하고 상호작용할 수 있게 해줍니다. testWidgets() 함수는 각 테스트 케이스마다 새로운 WidgetTester를 자동으로 생성하며, 일반적인 test() 함수 대신 사용됩니다. Finder 클래스들은 테스트 환경에서 위젯을 찾는 데 사용됩니다. 위젯 전용 Matcher 상수들은 Finder가 테스트 환경에서 위젯 하나 또는 여러 개를 찾았는지 확인하는 데 도움이 됩니다. 이 모든 것이 벅차게 느껴진다면 걱정하지 마세요. ..