#!/bin/bash # SUPERPORT 통합 테스트 실행 스크립트 # # 사용법: # ./test/run_all_tests.sh # 모든 테스트 실행 # ./test/run_all_tests.sh demo # 데모 테스트만 실행 # ./test/run_all_tests.sh automated # 자동화 테스트만 실행 echo "" echo "═══════════════════════════════════════════════════════════════" echo " 🚀 SUPERPORT 테스트 실행 스크립트 🚀" echo "═══════════════════════════════════════════════════════════════" echo "" # 색상 정의 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 테스트 모드 확인 MODE=${1:-"all"} # Flutter 확인 if ! command -v flutter &> /dev/null; then echo -e "${RED}❌ Flutter가 설치되어 있지 않습니다.${NC}" exit 1 fi # 의존성 확인 및 설치 echo -e "${BLUE}📦 의존성 확인 중...${NC}" flutter pub get # 테스트 리포트 디렉토리 생성 mkdir -p test_reports # 테스트 실행 함수 run_test() { local test_name=$1 local test_path=$2 echo "" echo -e "${YELLOW}▶️ $test_name 실행 중...${NC}" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" if flutter test "$test_path" --no-pub; then echo -e "${GREEN}✅ $test_name 성공!${NC}" return 0 else echo -e "${RED}❌ $test_name 실패!${NC}" return 1 fi } # 시작 시간 기록 START_TIME=$(date +%s) # 성공/실패 카운터 PASSED=0 FAILED=0 case $MODE in "demo") echo -e "${BLUE}📋 데모 테스트 모드${NC}" echo "" # 데모 테스트 실행 if run_test "장비 입고 데모" "test/integration/simple_equipment_in_demo_test.dart"; then ((PASSED++)) else ((FAILED++)) fi if run_test "회사 관리 데모" "test/integration/simple_company_demo_test.dart"; then ((PASSED++)) else ((FAILED++)) fi if run_test "사용자 관리 데모" "test/integration/simple_user_demo_test.dart"; then ((PASSED++)) else ((FAILED++)) fi if run_test "창고 관리 데모" "test/integration/simple_warehouse_demo_test.dart"; then ((PASSED++)) else ((FAILED++)) fi ;; "automated") echo -e "${BLUE}🤖 자동화 테스트 모드${NC}" echo "" # 자동화 테스트 실행 if run_test "장비 입고 자동화" "test/integration/automated/equipment_in_test.dart"; then ((PASSED++)) else ((FAILED++)) fi if run_test "회사 관리 자동화" "test/integration/automated/company_automated_test.dart"; then ((PASSED++)) else ((FAILED++)) fi if run_test "사용자 관리 자동화" "test/integration/automated/user_automated_test.dart"; then ((PASSED++)) else ((FAILED++)) fi if run_test "창고 관리 자동화" "test/integration/automated/warehouse_automated_test.dart"; then ((PASSED++)) else ((FAILED++)) fi ;; "master") echo -e "${BLUE}🎯 마스터 테스트 스위트 실행${NC}" echo "" # 마스터 테스트 스위트 실행 if run_test "통합 테스트 스위트" "test/integration/automated/master_test_suite.dart"; then ((PASSED++)) else ((FAILED++)) fi ;; *) echo -e "${BLUE}📋 전체 테스트 모드${NC}" echo "" # 단위 테스트 echo -e "${YELLOW}1️⃣ 단위 테스트${NC}" if run_test "Controller 테스트" "test/unit/controllers/"; then ((PASSED++)) else ((FAILED++)) fi # 위젯 테스트 echo -e "${YELLOW}2️⃣ 위젯 테스트${NC}" if run_test "Screen 위젯 테스트" "test/widget/screens/"; then ((PASSED++)) else ((FAILED++)) fi # 통합 테스트 echo -e "${YELLOW}3️⃣ 통합 테스트${NC}" if run_test "마스터 테스트 스위트" "test/integration/automated/master_test_suite.dart"; then ((PASSED++)) else ((FAILED++)) fi ;; esac # 종료 시간 및 소요 시간 계산 END_TIME=$(date +%s) DURATION=$((END_TIME - START_TIME)) MINUTES=$((DURATION / 60)) SECONDS=$((DURATION % 60)) # 최종 리포트 echo "" echo "═══════════════════════════════════════════════════════════════" echo " 📊 테스트 결과 요약 📊" echo "═══════════════════════════════════════════════════════════════" echo "" echo -e "⏱️ 총 소요시간: ${MINUTES}분 ${SECONDS}초" echo -e "✅ 성공: ${GREEN}$PASSED${NC}개" echo -e "❌ 실패: ${RED}$FAILED${NC}개" TOTAL=$((PASSED + FAILED)) if [ $TOTAL -gt 0 ]; then SUCCESS_RATE=$((PASSED * 100 / TOTAL)) echo -e "📊 성공률: ${SUCCESS_RATE}%" fi echo "" # 리포트 생성 TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S") REPORT_FILE="test_reports/test_summary_$TIMESTAMP.txt" cat > "$REPORT_FILE" << EOF SUPERPORT 테스트 실행 결과 ======================== 실행 시간: $(date) 테스트 모드: $MODE 소요 시간: ${MINUTES}분 ${SECONDS}초 결과: - 성공: $PASSED개 - 실패: $FAILED개 - 성공률: ${SUCCESS_RATE}% 상세 로그는 개별 테스트 출력을 확인하세요. EOF echo -e "${BLUE}📄 리포트 저장: $REPORT_FILE${NC}" echo "" # 종료 코드 설정 if [ $FAILED -gt 0 ]; then echo -e "${RED}⚠️ 일부 테스트가 실패했습니다. 로그를 확인하세요.${NC}" exit 1 else echo -e "${GREEN}🎉 모든 테스트가 성공했습니다!${NC}" exit 0 fi