feat: 자동화 테스트 프레임워크 Real API 전용으로 재구성
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

- Mock 서비스 제거 및 Real API 전용 테스트 헬퍼 추가
- Company, User, Warehouse 화면 테스트 클래스 신규 작성
- Master Test Suite에 모든 화면 테스트 통합
- 테스트 실행 스크립트 추가 (run_all_tests.sh)
- Clean Architecture 패턴 지원 준비

Note: UseCase 및 Repository 구현 후 완전한 테스트 실행 가능

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
JiWoong Sul
2025-08-11 14:09:59 +09:00
parent 1e6da44917
commit d64aa26157
6 changed files with 2111 additions and 11 deletions

128
test/scripts/run_all_tests.sh Executable file
View File

@@ -0,0 +1,128 @@
#!/bin/bash
# Superport 자동화 테스트 실행 스크립트
#
# 사용법:
# ./test/scripts/run_all_tests.sh # 모든 테스트 실행
# ./test/scripts/run_all_tests.sh Company # 특정 화면만 테스트
# ./test/scripts/run_all_tests.sh --help # 도움말
set -e # 에러 발생 시 스크립트 중단
# 색상 정의
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 프로젝트 루트 디렉토리로 이동
cd "$(dirname "$0")/../.."
echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}"
echo -e "${BLUE} 🚀 SUPERPORT 자동화 테스트 실행 🚀${NC}"
echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}"
echo ""
# 도움말 표시
if [ "$1" == "--help" ] || [ "$1" == "-h" ]; then
echo "사용법:"
echo " $0 # 모든 화면 테스트 실행"
echo " $0 [화면명] # 특정 화면만 테스트"
echo " $0 --parallel # 병렬 실행 (기본값)"
echo " $0 --sequential # 순차 실행"
echo ""
echo "테스트 가능한 화면:"
echo " - EquipmentIn : 장비 입고"
echo " - EquipmentOut : 장비 출고"
echo " - License : 라이선스"
echo " - Overview : 대시보드"
echo " - Company : 회사 관리"
echo " - User : 사용자 관리"
echo " - Warehouse : 창고 관리"
echo ""
echo "예시:"
echo " $0 Company # Company 화면만 테스트"
echo " $0 Company User # Company와 User 화면 테스트"
exit 0
fi
# 테스트 보고서 디렉토리 생성
mkdir -p test_reports
# Flutter 패키지 업데이트
echo -e "${YELLOW}📦 패키지 업데이트 중...${NC}"
flutter pub get
# 코드 생성 (Freezed, JsonSerializable)
echo -e "${YELLOW}🔧 코드 생성 중...${NC}"
flutter pub run build_runner build --delete-conflicting-outputs || true
# 테스트 실행 시작 시간 기록
START_TIME=$(date +%s)
# 테스트 실행
echo -e "${GREEN}🧪 테스트 실행 중...${NC}"
echo ""
# 특정 화면 테스트 또는 전체 테스트
if [ -n "$1" ] && [ "$1" != "--parallel" ] && [ "$1" != "--sequential" ]; then
# 특정 화면 테스트
echo -e "${BLUE}선택된 화면: $@${NC}"
flutter test test/integration/automated/master_test_suite.dart \
--reporter expanded \
--coverage \
--timeout 10m \
-- --include-screens "$@"
else
# 전체 테스트
echo -e "${BLUE}모든 화면 테스트 실행${NC}"
flutter test test/integration/automated/master_test_suite.dart \
--reporter expanded \
--coverage \
--timeout 10m
fi
# 테스트 결과 저장
TEST_EXIT_CODE=$?
# 종료 시간 및 소요 시간 계산
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
MINUTES=$((DURATION / 60))
SECONDS=$((DURATION % 60))
echo ""
echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}"
if [ $TEST_EXIT_CODE -eq 0 ]; then
echo -e "${GREEN}✅ 테스트 성공!${NC}"
else
echo -e "${RED}❌ 테스트 실패!${NC}"
fi
echo -e "${BLUE}⏱️ 소요 시간: ${MINUTES}${SECONDS}${NC}"
echo -e "${BLUE}📊 리포트 위치: test_reports/${NC}"
echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}"
# 커버리지 리포트 생성 (선택적)
if [ -d "coverage" ]; then
echo ""
echo -e "${YELLOW}📈 커버리지 리포트 생성 중...${NC}"
# HTML 커버리지 리포트 생성 (lcov 필요)
if command -v genhtml &> /dev/null; then
genhtml coverage/lcov.info -o coverage/html
echo -e "${GREEN}✅ HTML 커버리지 리포트 생성: coverage/html/index.html${NC}"
else
echo -e "${YELLOW}⚠️ genhtml이 설치되지 않음. HTML 리포트를 생성하려면 lcov를 설치하세요.${NC}"
echo -e "${YELLOW} brew install lcov (macOS) 또는 apt-get install lcov (Linux)${NC}"
fi
fi
# 최근 테스트 리포트 표시
echo ""
echo -e "${BLUE}📄 최근 생성된 리포트:${NC}"
ls -lt test_reports/*.md 2>/dev/null | head -3 || echo " 리포트 없음"
exit $TEST_EXIT_CODE