개발/Flutter & Dart
Flutter Test 02. Mockito
차파랑
2025. 5. 6. 17:51
1. Mockito 및 Build Runner 설치
flutter pub add mockito build_runner --dev
--dev
: 개발 의존성(dev_dependencies)으로 설치mockito
: 테스트용 Mock 객체를 생성하기 위한 패키지build_runner
: 코드 생성을 위한 명령어 실행 도구
2. 사용 방법 요약
- 테스트 대상에서 사용하는 객체(class)를 Mock 처리
- 아래와 같이 어노테이션을 선언
@GenerateMocks([http.Client])
- 아래 명령어로 Mock 클래스 생성
dart run build_runner build --delete-conflicting-outputs
--delete-conflicting-outputs
: 기존 생성된 코드와 충돌하는 파일 삭제 후 재생성
버전 이슈 해결 (Mockito 5.4.6 오류 발생 시)
pubspec.yaml
설정 예시
dependencies:
analyzer: ^6.0.0
dev_dependencies:
mockito: ^5.0.6
- 일부 버전에서
analyzer
와mockito
간 의존성 충돌 발생 - 위와 같이 다운그레이드하면 해결 가능
출처: 인프런 커뮤니티 질문
4. expect()
사용 예시
타입 검사
expect(await fetchAlbum(client), isA<Album>());
isA<T>()
: 값이T
타입인지 확인
예외 검사
expect(fetchAlbum(client), throwsException);
throwsException
: 해당 함수가 예외를 던지는지 확인
주의: 아래와 같이 await
를 함께 사용하면 테스트가 실패함
expect(await fetchAlbum(client), throwsException); // 실패
→ 예외가 발생하면 첫 줄에서 테스트가 종료되므로, expect()
에 도달하지 못함
올바른 방식:
expect(fetchAlbum(client), throwsException);
5. Mock 객체 직접 생성이 불필요한 경우
- 이미 Mock 클래스가 제공되는 경우,
@GenerateMocks
없이도 바로 사용할 수 있음