- test/integration/automated만 유지하고 나머지 테스트 삭제 - 삭제: api/, helpers/, unit/, widget/, fixtures/ 폴더 - 삭제: mock, 개별 통합 테스트 파일들 - 유지: automated 테스트 (실제 API + 자동화 시나리오) - 테스트 오류 수정 - debugPrint 함수 정의 오류 해결 (foundation import 추가) - ApiAutoFixer diagnostics 파라미터 누락 수정 - 타입 불일치 오류 수정 - 최종 상태 - 자동화 테스트 40개 파일 유지 - 오류 337개 → 2개 warning으로 감소 (99.4% 해결) - 실제 API 연동 테스트 정상 작동 확인
93 lines
3.2 KiB
Dart
93 lines
3.2 KiB
Dart
import 'dart:io';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'screens/equipment/equipment_in_full_test.dart';
|
|
|
|
/// 장비 테스트 독립 실행 스크립트
|
|
Future<void> 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);
|
|
}
|
|
} |