- 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>
128 lines
4.7 KiB
Bash
Executable File
128 lines
4.7 KiB
Bash
Executable File
#!/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 |