Flutter의 테스트 커버리지 측정 방법과 활용
Flutter 앱 개발에서 테스트 커버리지(Test Coverage)는 코드의 품질을 평가하는 중요한 지표입니다. 테스트 커버리지를 측정하면 얼마나 많은 코드가 테스트되고 있는지 확인할 수 있으며, 이를 통해 테스트되지 않은 부분을 보완할 수 있습니다.
이 글에서는 Flutter에서 테스트 커버리지를 측정하고 보고서를 생성하는 방법을 설명하고, 효과적인 테스트 전략을 소개하겠습니다.
1. 테스트 커버리지란?
테스트 커버리지(Test Coverage)는 애플리케이션 코드에서 테스트가 실행된 비율을 나타내는 지표입니다. 즉, 작성된 테스트 코드가 전체 코드에서 몇 퍼센트의 실행을 검증하는지를 측정합니다.
테스트 커버리지를 측정하면 다음과 같은 장점이 있습니다.
- 테스트가 부족한 부분을 식별: 테스트되지 않은 코드 영역을 찾을 수 있음
- 코드 품질 향상: 더 많은 테스트 작성으로 코드 안정성을 높일 수 있음
- 디버깅 시간 단축: 사전에 버그를 발견할 확률 증가
이제 Flutter에서 테스트 커버리지를 측정하는 방법을 살펴보겠습니다.
2. Flutter 테스트 커버리지 측정 환경 설정
(1) 기본 테스트 패키지 설치
Flutter에서 테스트를 실행하려면 flutter_test
패키지가 필요하며, 이는 기본적으로 포함되어 있습니다.
flutter pub add test --dev
(2) 테스트 커버리지 실행을 위한 명령어
Flutter에서 테스트 커버리지를 측정하려면 다음 명령어를 실행합니다.
flutter test --coverage
이 명령어를 실행하면 프로젝트의 coverage/
폴더에 lcov.info
파일이 생성됩니다.
(3) 커버리지 보고서 변환을 위한 lcov
설치
Flutter는 기본적으로 lcov
포맷의 커버리지 파일을 생성하지만, 이를 사람이 읽기 쉬운 HTML 형태로 변환하려면 lcov
도구를 설치해야 합니다.
sudo apt install lcov # Ubuntu, Linux
brew install lcov # macOS
3. Flutter 테스트 커버리지 측정 및 HTML 보고서 생성
(1) 커버리지 측정 및 보고서 생성
다음 명령어를 실행하면 lcov
를 사용하여 커버리지를 HTML 형식으로 변환할 수 있습니다.
flutter test --coverage
lcov --remove coverage/lcov.info 'lib/main.dart' 'lib/**/*.g.dart' -o coverage/lcov.cleaned.info
genhtml -o coverage/html coverage/lcov.cleaned.info
이 명령어는 다음을 수행합니다.
flutter test --coverage
: 테스트 실행 후coverage/lcov.info
파일 생성lcov --remove
:main.dart
및*.g.dart
(자동 생성 코드) 제외genhtml
: HTML 보고서 생성
(2) 생성된 HTML 보고서 확인
다음 명령어를 실행하면 HTML 커버리지 보고서를 브라우저에서 확인할 수 있습니다.
open coverage/html/index.html # macOS
xdg-open coverage/html/index.html # Linux
Windows에서는 파일 탐색기에서 coverage/html/index.html
을 직접 열면 됩니다.
4. 테스트 커버리지 적용 예제
(1) 테스트 대상 코드
// lib/services/calculator.dart
class Calculator {
int add(int a, int b) => a + b;
int subtract(int a, int b) => a - b;
int multiply(int a, int b) => a * b;
}
(2) 테스트 코드 작성
// test/calculator_test.dart
import 'package:flutter_test/flutter_test.dart';
import 'package:my_app/services/calculator.dart';
void main() {
group('Calculator 테스트', () {
final calculator = Calculator();
test('1 + 2 = 3', () {
expect(calculator.add(1, 2), 3);
});
test('5 - 2 = 3', () {
expect(calculator.subtract(5, 2), 3);
});
});
}
위 코드에서 multiply()
함수에 대한 테스트가 없으므로, 테스트 커버리지는 100%가 되지 않습니다.
(3) 테스트 커버리지 확인
위 테스트를 실행하면 HTML 보고서에서 multiply()
함수가 테스트되지 않았음을 확인할 수 있습니다.
5. CI/CD 환경에서 테스트 커버리지 측정
Flutter 프로젝트에서 GitHub Actions을 활용하여 테스트 커버리지를 자동으로 측정할 수 있습니다.
(1) GitHub Actions 설정 예제
name: Flutter Test Coverage
on:
push:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: subosito/flutter-action@v2
with:
flutter-version: 3.0.0
- run: flutter pub get
- run: flutter test --coverage
- run: lcov --remove coverage/lcov.info 'lib/main.dart' 'lib/**/*.g.dart' -o coverage/lcov.cleaned.info
- run: genhtml -o coverage/html coverage/lcov.cleaned.info
CI/CD 환경에서도 테스트 커버리지를 자동으로 측정하고 관리할 수 있습니다.
결론
Flutter에서 테스트 커버리지를 측정하면 코드 품질을 높이고, 테스트되지 않은 부분을 쉽게 파악할 수 있습니다.
- flutter test --coverage 명령어로 커버리지 측정
- lcov를 사용하여 HTML 보고서 생성
- CI/CD 환경에서 자동화하여 지속적인 품질 관리
이제 테스트 커버리지를 활용하여 더욱 안정적인 Flutter 앱을 개발해 보세요!
'Flutter' 카테고리의 다른 글
Flutter의 GitHub Actions 사용법과 CI/CD 설정 방법 (0) | 2025.03.29 |
---|---|
Flutter의 CI/CD 설정 방법과 활용 (0) | 2025.03.29 |
Flutter의 자동화 테스트(Automated Testing) 방법과 활용 (0) | 2025.03.29 |
Flutter의 위젯 테스트(Widget Testing) 방법과 활용 (0) | 2025.03.29 |
Flutter의 통합 테스트(Integration Testing) 방법과 활용 (0) | 2025.03.29 |