Files
superport/test/integration
JiWoong Sul 198aac6525
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
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
2025-08-05 20:24:05 +09:00
..

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 엔드포인트 설정 (선택사항)

테스트 실행 방법

전체 통합 테스트 실행

# 프로젝트 루트에서 실행
./test/integration/run_integration_tests.sh

개별 화면 테스트 실행

# 로그인 테스트
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. 실패 시나리오도 함께 테스트하기