test: 통합 테스트 오류 및 경고 수정
Some checks failed
Flutter Test & Quality Check / Test on macos-latest (push) Has been cancelled
Flutter Test & Quality Check / Test on ubuntu-latest (push) Has been cancelled
Flutter Test & Quality Check / Build APK (push) Has been cancelled

- 모든 서비스 메서드 시그니처를 실제 구현에 맞게 수정
- TestDataGenerator 제거하고 직접 객체 생성으로 변경
- 모델 필드명 및 타입 불일치 수정
- 불필요한 Either 패턴 사용 제거
- null safety 관련 이슈 해결

수정된 파일:
- test/integration/screens/company_integration_test.dart
- test/integration/screens/equipment_integration_test.dart
- test/integration/screens/user_integration_test.dart
- test/integration/screens/login_integration_test.dart
This commit is contained in:
JiWoong Sul
2025-08-05 20:24:05 +09:00
parent d6f34c0a52
commit 198aac6525
145 changed files with 41527 additions and 5220 deletions

153
test/integration/README.md Normal file
View File

@@ -0,0 +1,153 @@
# Flutter Superport 통합 테스트
이 디렉토리는 실제 API를 호출하는 통합 테스트를 포함합니다.
## 개요
통합 테스트는 Mock을 사용하지 않고 실제 백엔드 API를 호출하여 전체 시스템의 동작을 검증합니다. 각 화면별로 사용자가 수행할 수 있는 모든 작업을 자동으로 테스트합니다.
## 테스트 구조
```
test/integration/
├── screens/ # 화면별 통합 테스트
│ ├── login_integration_test.dart
│ ├── company_integration_test.dart
│ ├── equipment_integration_test.dart
│ ├── user_integration_test.dart
│ ├── license_integration_test.dart # TODO
│ └── warehouse_integration_test.dart # TODO
├── automated/ # 기존 자동화 테스트 프레임워크
│ └── framework/ # 재사용 가능한 테스트 유틸리티
├── run_integration_tests.sh # 전체 테스트 실행 스크립트
└── README.md # 이 파일
```
## 사전 요구사항
1. **테스트 계정**: `admin@superport.kr` / `admin123!`
2. **API 서버**: 테스트 환경의 API 서버가 실행 중이어야 함
3. **환경 설정**: `.env` 파일에 API 엔드포인트 설정 (선택사항)
## 테스트 실행 방법
### 전체 통합 테스트 실행
```bash
# 프로젝트 루트에서 실행
./test/integration/run_integration_tests.sh
```
### 개별 화면 테스트 실행
```bash
# 로그인 테스트
flutter test test/integration/screens/login_integration_test.dart
# 회사 관리 테스트
flutter test test/integration/screens/company_integration_test.dart
# 장비 관리 테스트
flutter test test/integration/screens/equipment_integration_test.dart
# 사용자 관리 테스트
flutter test test/integration/screens/user_integration_test.dart
```
## 테스트 시나리오
### 1. 로그인 화면 (`login_integration_test.dart`)
- ✅ 유효한 계정으로 로그인
- ✅ 잘못된 비밀번호로 로그인 시도
- ✅ 존재하지 않는 이메일로 로그인 시도
- ✅ 이메일 형식 검증
- ✅ 빈 필드로 로그인 시도
- ✅ 로그아웃 기능
- ✅ 토큰 갱신 기능
### 2. 회사 관리 화면 (`company_integration_test.dart`)
- ✅ 회사 목록 조회
- ✅ 새 회사 생성 (자동 생성 데이터)
- ✅ 회사 상세 정보 조회
- ✅ 회사 정보 수정
- ✅ 회사 삭제
- ✅ 회사 검색 기능
- ✅ 활성/비활성 필터링
- ✅ 페이지네이션
- ✅ 대량 데이터 생성 및 조회 성능 테스트
### 3. 장비 관리 화면 (`equipment_integration_test.dart`)
- ✅ 장비 목록 조회
- ✅ 장비 입고 (생성)
- ✅ 장비 상세 정보 조회
- ✅ 장비 출고
- ✅ 장비 검색 기능
- ✅ 상태별 필터링 (입고/출고)
- ✅ 카테고리별 필터링
- ✅ 장비 정보 수정
- ✅ 대량 장비 입고 성능 테스트
### 4. 사용자 관리 화면 (`user_integration_test.dart`)
- ✅ 사용자 목록 조회
- ✅ 신규 사용자 생성
- ✅ 사용자 상세 정보 조회
- ✅ 사용자 정보 수정
- ✅ 사용자 상태 변경 (활성/비활성)
- ✅ 역할별 필터링
- ✅ 회사별 필터링
- ✅ 사용자 검색 기능
- ✅ 사용자 삭제
- ✅ 비밀번호 변경 기능
### 5. 라이선스 관리 화면 (`license_integration_test.dart`) - TODO
- 라이선스 목록 조회
- 라이선스 등록
- 라이선스 갱신
- 만료 예정 라이선스 필터링
- 라이선스 삭제
### 6. 창고 관리 화면 (`warehouse_integration_test.dart`) - TODO
- 창고 위치 목록 조회
- 새 창고 위치 생성
- 창고 정보 수정
- 창고 삭제
- 활성/비활성 필터링
## 테스트 데이터 생성
테스트는 `TestDataGenerator` 클래스를 사용하여 현실적인 테스트 데이터를 자동으로 생성합니다:
- 실제 한국 기업명 사용
- 실제 제조사 및 제품 모델명 사용
- 유효한 사업자번호 및 전화번호 형식
- 타임스탬프 기반 고유 ID 생성
## 주의사항
1. **데이터 정리**: 각 테스트는 생성한 데이터를 자동으로 정리합니다 (`tearDownAll`)
2. **테스트 격리**: 각 테스트는 독립적으로 실행 가능하도록 설계되었습니다
3. **실행 순서**: 일부 테스트는 다른 리소스(회사, 창고)에 의존하므로 순서가 중요할 수 있습니다
4. **성능**: 실제 API를 호출하므로 Mock 테스트보다 느립니다
5. **네트워크**: 안정적인 네트워크 연결이 필요합니다
## 문제 해결
### 로그인 실패
- 테스트 계정 정보 확인: `admin@superport.kr` / `admin123!`
- API 서버 연결 상태 확인
### 데이터 생성 실패
- 필수 필드 누락 확인
- API 권한 확인
- 중복 데이터 (사업자번호, 이메일 등) 확인
### 테스트 데이터가 삭제되지 않음
- 테스트가 중간에 실패한 경우 수동으로 정리 필요
- 관리자 페이지에서 테스트 데이터 확인 및 삭제
## 기여 방법
1. 새로운 화면 테스트 추가 시 동일한 패턴 따르기
2. 테스트 데이터는 항상 정리하기
3. 의미 있는 로그 메시지 포함하기
4. 실패 시나리오도 함께 테스트하기