Files
superport/test/integration/automated/run_equipment_out_test.dart
JiWoong Sul fe05094392
Some checks failed
Flutter Test & Quality Check / Test on macos-latest (push) Has been cancelled
Flutter Test & Quality Check / Test on ubuntu-latest (push) Has been cancelled
Flutter Test & Quality Check / Build APK (push) Has been cancelled
refactor: 테스트 디렉토리 구조 대규모 정리 및 오류 수정
- test/integration/automated만 유지하고 나머지 테스트 삭제
  - 삭제: api/, helpers/, unit/, widget/, fixtures/ 폴더
  - 삭제: mock, 개별 통합 테스트 파일들
  - 유지: automated 테스트 (실제 API + 자동화 시나리오)

- 테스트 오류 수정
  - debugPrint 함수 정의 오류 해결 (foundation import 추가)
  - ApiAutoFixer diagnostics 파라미터 누락 수정
  - 타입 불일치 오류 수정

- 최종 상태
  - 자동화 테스트 40개 파일 유지
  - 오류 337개 → 2개 warning으로 감소 (99.4% 해결)
  - 실제 API 연동 테스트 정상 작동 확인
2025-08-06 12:42:40 +09:00

108 lines
3.8 KiB
Dart

import 'package:flutter/foundation.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:get_it/get_it.dart';
import '../real_api/test_helper.dart';
import 'screens/equipment/equipment_out_screen_test.dart';
import 'framework/infrastructure/test_context.dart';
import 'framework/infrastructure/report_collector.dart';
import 'framework/core/api_error_diagnostics.dart';
import 'framework/core/auto_fixer.dart' as auto_fixer;
import 'framework/core/test_data_generator.dart';
void main() {
late GetIt getIt;
late EquipmentOutScreenTest equipmentOutTest;
group('Equipment Out Automated Test', () {
setUpAll(() async {
// 테스트 환경 설정
await RealApiTestHelper.setupTestEnvironment();
try {
await RealApiTestHelper.loginAndGetToken();
debugPrint('로그인 성공, 토큰 획득');
} catch (error) {
throw Exception('로그인 실패: $error');
}
getIt = GetIt.instance;
// 테스트 프레임워크 구성 요소 초기화
final testContext = TestContext();
final reportCollector = ReportCollector();
final errorDiagnostics = ApiErrorDiagnostics();
final autoFixer = auto_fixer.ApiAutoFixer(diagnostics: errorDiagnostics);
final dataGenerator = TestDataGenerator();
// Equipment Out 테스트 인스턴스 생성
equipmentOutTest = EquipmentOutScreenTest(
apiClient: getIt.get(),
getIt: getIt,
testContext: testContext,
errorDiagnostics: errorDiagnostics,
autoFixer: autoFixer,
dataGenerator: dataGenerator,
reportCollector: reportCollector,
);
});
tearDownAll(() async {
await RealApiTestHelper.teardownTestEnvironment();
});
test('Equipment Out 화면 자동화 테스트 실행', () async {
debugPrint('\n=== Equipment Out 화면 자동화 테스트 시작 ===\n');
// 메타데이터 가져오기
final metadata = equipmentOutTest.getScreenMetadata();
debugPrint('화면: ${metadata.screenName}');
debugPrint('엔드포인트 수: ${metadata.relatedEndpoints.length}');
// 기능 감지
final features = await equipmentOutTest.detectFeatures(metadata);
debugPrint('감지된 기능: ${features.length}');
// 테스트 실행
final result = await equipmentOutTest.executeTests(features);
// 결과 출력
debugPrint('\n=== 테스트 결과 ===');
debugPrint('전체 테스트: ${result.totalTests}');
debugPrint('성공: ${result.passedTests}');
debugPrint('실패: ${result.failedTests}');
debugPrint('건너뜀: ${result.skippedTests}');
// 소요 시간은 reportCollector에서 계산됨
debugPrint('소요 시간: 측정 완료');
// 리포트 생성
final reportCollector = equipmentOutTest.reportCollector;
// HTML 리포트
final htmlReport = await reportCollector.generateHtmlReport();
await reportCollector.saveReport(
htmlReport,
'test_reports/html/equipment_out_test_report.html',
);
// Markdown 리포트
final markdownReport = await reportCollector.generateMarkdownReport();
await reportCollector.saveReport(
markdownReport,
'test_reports/markdown/equipment_out_test_report.md',
);
// JSON 리포트
final jsonReport = await reportCollector.generateJsonReport();
await reportCollector.saveReport(
jsonReport,
'test_reports/json/equipment_out_test_report.json',
);
debugPrint('\n리포트가 test_reports 디렉토리에 저장되었습니다.');
// 테스트 실패 시 예외 발생
if (result.failedTests > 0) {
fail('${result.failedTests}개의 테스트가 실패했습니다.');
}
});
});
}