- 모든 서비스 메서드 시그니처를 실제 구현에 맞게 수정 - 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
218 lines
6.5 KiB
Bash
Executable File
218 lines
6.5 KiB
Bash
Executable File
#!/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 |