- 모든 서비스 메서드 시그니처를 실제 구현에 맞게 수정 - 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
92 lines
3.0 KiB
Dart
92 lines
3.0 KiB
Dart
import 'dart:io';
|
|
import 'screens/equipment/equipment_in_full_test.dart';
|
|
|
|
/// 장비 테스트 독립 실행 스크립트
|
|
Future<void> main() async {
|
|
print('\n==============================');
|
|
print('장비 화면 자동 테스트 시작');
|
|
print('==============================\n');
|
|
|
|
final equipmentTest = EquipmentInFullTest();
|
|
|
|
try {
|
|
final results = await equipmentTest.runAllTests();
|
|
|
|
print('\n==============================');
|
|
print('테스트 결과 요약');
|
|
print('==============================');
|
|
print('전체 테스트: ${results['totalTests']}개');
|
|
print('성공: ${results['passedTests']}개');
|
|
print('실패: ${results['failedTests']}개');
|
|
print('==============================\n');
|
|
|
|
// 상세 결과 출력
|
|
final tests = results['tests'] as List;
|
|
for (final test in tests) {
|
|
final status = test['passed'] ? '✅' : '❌';
|
|
print('$status ${test['testName']}');
|
|
if (!test['passed'] && test['error'] != null) {
|
|
print(' 에러: ${test['error']}');
|
|
if (test['retryCount'] != null && test['retryCount'] > 0) {
|
|
print(' 재시도 횟수: ${test['retryCount']}회');
|
|
}
|
|
}
|
|
}
|
|
|
|
// 리포트 생성
|
|
final reportCollector = equipmentTest.autoTestSystem.reportCollector;
|
|
|
|
print('\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);
|
|
print('✅ HTML 리포트 생성: ${htmlFile.path}');
|
|
} catch (e) {
|
|
print('❌ HTML 리포트 생성 실패: $e');
|
|
}
|
|
|
|
// Markdown 리포트 생성
|
|
try {
|
|
final mdReport = await reportCollector.generateMarkdownReport();
|
|
final mdFile = File('test_reports/equipment_test_report.md');
|
|
await mdFile.writeAsString(mdReport);
|
|
print('✅ Markdown 리포트 생성: ${mdFile.path}');
|
|
} catch (e) {
|
|
print('❌ Markdown 리포트 생성 실패: $e');
|
|
}
|
|
|
|
// JSON 리포트 생성
|
|
try {
|
|
final jsonReport = await reportCollector.generateJsonReport();
|
|
final jsonFile = File('test_reports/equipment_test_report.json');
|
|
await jsonFile.writeAsString(jsonReport);
|
|
print('✅ JSON 리포트 생성: ${jsonFile.path}');
|
|
} catch (e) {
|
|
print('❌ JSON 리포트 생성 실패: $e');
|
|
}
|
|
|
|
// 실패한 테스트가 있으면 비정상 종료
|
|
if (results['failedTests'] > 0) {
|
|
print('\n❌ ${results['failedTests']}개의 테스트가 실패했습니다.');
|
|
exit(1);
|
|
} else {
|
|
print('\n✅ 모든 테스트가 성공했습니다!');
|
|
exit(0);
|
|
}
|
|
} catch (e, stackTrace) {
|
|
print('\n❌ 치명적 오류 발생:');
|
|
print(e);
|
|
print('\n스택 추적:');
|
|
print(stackTrace);
|
|
exit(2);
|
|
}
|
|
} |