플러터 Testing - Unit(1)

Inyeong Kang·2023년 7월 7일
0


Flutter Cookbook 링크

An introduction to unit testing

더 많은 기능을 추가하거나 기존 기능을 변경해도 앱이 계속 작동하도록 하려면 어떻게 해야 할까? 테스트를 작성해라.

Unit tests는 단일 함수, 메서드 또는 클래스의 동작을 확인하는 데 편리하다. 이 test 패키지는 단위 테스트 작성을 위한 핵심 프레임워크를 제공하고 flutter_test 패키지는 위젯 테스트를 위한 추가 유틸리티를 제공한다.

이 레시피는 다음 단계를 사용하여 test 패키지에서 제공하는 핵심 기능을 보여준다.
1. test 또는 flutter_test 종속성 추가
2. 테스트 파일 생성
3. 테스트 할 클래스 생성
4. 클래스를 위한 테스트 작성
5. group에 멀티 테스트 조합
6. 테스트 실행
테스트 패키지에 대한 자세한 내용은 테스트 패키지 설명서를 참조하라.

1. 테스트 종속성 추가

이 test패키지는 Dart에서 테스트를 작성하기 위한 핵심 기능을 제공합니다. 이것은 웹, 서버 및 Flutter 앱에서 사용하는 패키지를 작성할 때 가장 좋은 접근 방식입니다.

test패키지를 개발 종속성으로 추가하려면 flutter pub add 실행한다.
flutter pub add dev:test

2. 테스트 파일 생성

이 예에서 두 개의 파일 counter.dart 및 counter_test.dart을 만든다.

counter.dart 파일에는 테스트하려는 클래스가 포함되어 있으며 lib폴더에 상주한다. counter_test.dart 파일에는 테스트 자체가 포함되어 있으며 test 폴더 안에 있다.

일반적으로 테스트 파일은 Flutter 애플리케이션 또는 패키지의 루트에 있는 test 폴더 안에 있어야 한다. 테스트 파일은 항상 _test.dart로 끝나야 하고, 이는 테스트 실행자가 테스트를 검색할 때 사용하는 규칙이다.

완료되면 폴더 구조는 다음과 같아야 한다.

  lib/
    counter.dart
  test/
    counter_test.dart

3. 테스트 할 클래스 생성

다음으로 테스트할 "단위"가 필요하다. "단위"는 함수, 메서드 또는 클래스의 또 다른 이름이라는 것을 기억해라. 이 예제에서는 lib/counter.dart 파일 내부에 Counter 클래스를 만든다. 0에서 시작하는 값의 증가 및 감소를 담당한다.

class Counter {
  int value = 0;

  void increment() => value++;

  void decrement() => value--;
}

참고) 간단하게 하기 위해 이 튜토리얼에서는 "테스트 주도 개발" 접근 방식을 따르지 않는다. 그러한 개발 스타일이 더 편하다면 언제든지 그 길을 갈 수 있음이다.

4. 클래스를 위한 테스트 작성

counter_test.dart 파일 안에 첫 번째 단위 테스트를 작성하자. 테스트는 최상위 test 함수를 사용하여 정의되며, 최상위 expect 함수를 사용하여 결과가 올바른지 확인할 수 있다. 이 두 함수는 모두 test 패키지에서 제공된다.

// Import the test package and Counter class
import 'package:counter_app/counter.dart';
import 'package:test/test.dart';

void main() {
  test('Counter value should be incremented', () {
    final counter = Counter();

    counter.increment();

    expect(counter.value, 1);
  });
}

5. group에 멀티 테스트 조합

서로 관련된 여러 테스트가 있는 경우 test 패키지에서 제공하는 group 함수를 사용하여 결합해라.

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);
    });
  });
}

6. 테스트 실행

이제 테스트가 있는 Counter 클래스가 있으므로 테스트를 실행할 수 있다.

IntelliJ 또는 VSCode를 사용하여 테스트 실행

IntelliJ 및 VSCode용 Flutter 플러그인은 테스트 실행을 지원한다. 이는 가장 빠른 피드백 반복과 중단점 설정 기능을 제공하기 때문에 테스트를 작성하는 동안 가장 좋은 옵션인 경우가 많다.

- IntelliJ
1. counter_test.dart 파일 열기
2. Run 메뉴 선택
3. Run 'tests in counter_test.dart'옵션 클릭
4. 또는 플랫폼에 적합한 키보드 단축키 사용

- VSCode
1. counter_test.dart 파일 열기
2. Run 메뉴 선택
3. Start Debugging 옵션 클릭
4. 또는 플랫폼에 적합한 키보드 단축키 사용

터미널에서 테스트 실행

터미널을 사용하여 프로젝트의 루트에서 다음 명령을 실행하여 테스트를 실행할 수도 있다.
flutter test test/counter_test.dart
단위 테스트에 대한 추가 옵션을 보려면 다음 명령을 실행할 수 있다.
flutter test --help

profile
안녕하세요. 강인영입니다. GDSC에서 필요한 것들을 작업하고 업로드하려고 합니다!

0개의 댓글