[flutter] 플러터 Riverpod에서의 테스트 자동화 방법

플러터(Flutter)는 빠르게 UI를 빌드하고 테스트할 수 있는 크로스 플랫폼 프레임워크입니다. Riverpod는 플러터 애플리케이션의 상태 관리와 종속성 주입을 쉽게 할 수 있도록 도와주는 패키지입니다. 이번 포스트에서는 Riverpod를 사용하여 테스트 자동화를 어떻게 할 수 있는지 알아보겠습니다.

1. 테스트를 위한 패키지 추가하기

먼저, flutter_test 패키지를 dev_dependencies에 추가해야 합니다. 이 패키지는 플러터 애플리케이션을 테스트하는 데 필요한 도구를 제공합니다. pubspec.yaml 파일에 아래와 같이 추가해주세요.

dev_dependencies:
  flutter_test:
    sdk: flutter

2. 테스트 작성하기

테스트를 작성하기 위해 test 폴더를 생성하고 그 안에 테스트 파일을 만듭니다. 테스트 파일의 이름은 *_test.dart 형식을 따르는 것이 좋습니다. 테스트에 필요한 각각의 경우를 test 함수로 작성할 수 있습니다. 예를 들어, 다음과 같은 코드가 있다고 가정해봅시다.

import 'package:flutter_test/flutter_test.dart';
import 'package:my_app/provider.dart';

void main() {
  test('CounterProvider의 초기 값은 0이어야 한다', () {
    final counterProvider = CounterProvider();

    expect(counterProvider.state, 0);
  });

  test('CounterProvider의 값을 증가시킬 수 있어야 한다', () {
    final counterProvider = CounterProvider();

    counterProvider.increment();

    expect(counterProvider.state, 1);
  });
}

위의 예시에서는 my_app 패키지의 provider.dart 파일에서 CounterProvider가 가져와집니다. 테스트 함수는 각각의 테스트 케이스를 검증하고 예상 결과와 일치하는지 확인합니다.

3. 테스트 실행하기

테스트를 시작하기 위해서는 터미널에서 flutter test 명령어를 실행합니다. 이 명령어는 test 폴더 내의 모든 테스트 파일을 실행합니다. 테스트 결과는 터미널에서 확인할 수 있습니다.

4. 테스트 자동화하기

테스트를 자동화하기 위해서는 CI/CD 도구를 사용할 수 있습니다. 예를 들어, GitHub Actions를 사용하여 소스코드가 푸시될 때마다 자동으로 테스트를 실행할 수 있습니다.

.github/workflows/flutter.yml 파일을 생성하고 다음과 같이 작성합니다. 이 예시에서는 main 브랜치에 푸시될 때마다 테스트가 실행되도록 설정하였습니다.

name: Flutter CI

on:
  push:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: Set up Flutter
      uses: subosito/flutter-action@v2
      with:
        channel: 'stable'

    - name: Install dependencies
      run: flutter pub get

    - name: Run tests
      run: flutter test

이제 소스코드가 푸시될 때마다 GitHub Actions가 테스트를 실행하게 됩니다.

결론

이번 포스트에서는 플러터 Riverpod에서 테스트 자동화를 어떻게 할 수 있는지 알아보았습니다. 테스트를 작성하고 실행하는 방법을 배웠으며, CI/CD 도구를 사용하여 테스트 자동화를 설정하는 방법도 살펴보았습니다. 테스트 자동화는 코드의 품질과 안정성을 유지하는 데 도움이 되며, 효율적인 애플리케이션 개발을 위한 필수적인 단계입니다.

참고 자료