test: 통합 테스트 오류 및 경고 수정
- 모든 서비스 메서드 시그니처를 실제 구현에 맞게 수정 - 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:
153
test/integration/README.md
Normal file
153
test/integration/README.md
Normal 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. 실패 시나리오도 함께 테스트하기
|
||||
Reference in New Issue
Block a user