import 'dart:io'; import 'package:flutter/foundation.dart'; import 'screens/equipment/equipment_in_full_test.dart'; /// 장비 테스트 독립 실행 스크립트 Future main() async { debugPrint('\n=============================='); debugPrint('장비 화면 자동 테스트 시작'); debugPrint('==============================\n'); final equipmentTest = EquipmentInFullTest(); try { final results = await equipmentTest.runAllTests(); debugPrint('\n=============================='); debugPrint('테스트 결과 요약'); debugPrint('=============================='); debugPrint('전체 테스트: ${results['totalTests']}개'); debugPrint('성공: ${results['passedTests']}개'); debugPrint('실패: ${results['failedTests']}개'); debugPrint('==============================\n'); // 상세 결과 출력 final tests = results['tests'] as List; for (final test in tests) { final status = test['passed'] ? '✅' : '❌'; debugPrint('$status ${test['testName']}'); if (!test['passed'] && test['error'] != null) { debugPrint(' 에러: ${test['error']}'); if (test['retryCount'] != null && test['retryCount'] > 0) { debugPrint(' 재시도 횟수: ${test['retryCount']}회'); } } } // 리포트 생성 final reportCollector = equipmentTest.autoTestSystem.reportCollector; debugPrint('\n리포트 생성 중...'); // 리포트 디렉토리 생성 final reportDir = Directory('test_reports'); if (!await reportDir.exists()) { await reportDir.create(recursive: true); } // HTML 리포트 생성 try { final htmlReport = await reportCollector.generateHtmlReport(); final htmlFile = File('test_reports/equipment_test_report.html'); await htmlFile.writeAsString(htmlReport); debugPrint('✅ HTML 리포트 생성: ${htmlFile.path}'); } catch (e) { debugPrint('❌ HTML 리포트 생성 실패: $e'); } // Markdown 리포트 생성 try { final mdReport = await reportCollector.generateMarkdownReport(); final mdFile = File('test_reports/equipment_test_report.md'); await mdFile.writeAsString(mdReport); debugPrint('✅ Markdown 리포트 생성: ${mdFile.path}'); } catch (e) { debugPrint('❌ Markdown 리포트 생성 실패: $e'); } // JSON 리포트 생성 try { final jsonReport = await reportCollector.generateJsonReport(); final jsonFile = File('test_reports/equipment_test_report.json'); await jsonFile.writeAsString(jsonReport); debugPrint('✅ JSON 리포트 생성: ${jsonFile.path}'); } catch (e) { debugPrint('❌ JSON 리포트 생성 실패: $e'); } // 실패한 테스트가 있으면 비정상 종료 if (results['failedTests'] > 0) { debugPrint('\n❌ ${results['failedTests']}개의 테스트가 실패했습니다.'); exit(1); } else { debugPrint('\n✅ 모든 테스트가 성공했습니다!'); exit(0); } } catch (e, stackTrace) { debugPrint('\n❌ 치명적 오류 발생:'); debugPrint(e.toString()); debugPrint('\n스택 추적:'); debugPrint(stackTrace.toString()); exit(2); } }