feat: 자동화 테스트 프레임워크 Real API 전용으로 재구성
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

- Mock 서비스 제거 및 Real API 전용 테스트 헬퍼 추가
- Company, User, Warehouse 화면 테스트 클래스 신규 작성
- Master Test Suite에 모든 화면 테스트 통합
- 테스트 실행 스크립트 추가 (run_all_tests.sh)
- Clean Architecture 패턴 지원 준비

Note: UseCase 및 Repository 구현 후 완전한 테스트 실행 가능

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
JiWoong Sul
2025-08-11 14:09:59 +09:00
parent 1e6da44917
commit d64aa26157
6 changed files with 2111 additions and 11 deletions

View File

@@ -11,14 +11,17 @@ 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';
import 'framework/core/test_helper.dart';
// 화면별 테스트 임포트
import 'screens/equipment/equipment_in_automated_test.dart';
import 'screens/equipment/equipment_out_screen_test.dart';
import 'screens/license/license_screen_test.dart';
import 'screens/overview/overview_screen_test.dart';
import 'screens/company/company_screen_test.dart';
import 'screens/user/user_screen_test.dart';
import 'screens/warehouse/warehouse_screen_test.dart';
import 'screens/base/base_screen_test.dart';
// import 'warehouse_automated_test.dart' as warehouse_test;
/// SUPERPORT 마스터 테스트 스위트
///
@@ -170,9 +173,8 @@ class MasterTestSuite {
_log('🔧 테스트 환경 설정 중...\n');
try {
// GetIt 초기화
getIt = GetIt.instance;
// await RealApiTestHelper.setupTestEnvironment();
// GetIt 초기화 및 Real API 환경 설정
getIt = await RealApiTestHelper.setupTestEnvironment();
// API 클라이언트 가져오기
apiClient = getIt.get<ApiClient>();
@@ -191,8 +193,9 @@ class MasterTestSuite {
dataGenerator = TestDataGenerator();
// 로그인 로직 주석 처리 - 필요시 구현
_log('✅ 로그인 성공!\n');
// 테스트용 로그인 수행
final accessToken = await RealApiTestHelper.loginForTest();
_log('✅ 로그인 성공! (토큰: ${accessToken.substring(0, 20)}...)\n');
} catch (e) {
_log('❌ 환경 설정 실패: $e');
@@ -256,10 +259,44 @@ class MasterTestSuite {
));
}
// 5. Company 테스트 (기존 테스트가 BaseScreenTest를 상속하지 않는 경우 래퍼 필요)
// 5. Company 테스트
if (_shouldIncludeScreen('Company')) {
screenTests.add(CompanyScreenTest(
apiClient: apiClient,
getIt: getIt,
testContext: TestContext(),
errorDiagnostics: errorDiagnostics,
autoFixer: autoFixer,
dataGenerator: dataGenerator,
reportCollector: ReportCollector(),
));
}
// 6. User 테스트
if (_shouldIncludeScreen('User')) {
screenTests.add(UserScreenTest(
apiClient: apiClient,
getIt: getIt,
testContext: TestContext(),
errorDiagnostics: errorDiagnostics,
autoFixer: autoFixer,
dataGenerator: dataGenerator,
reportCollector: ReportCollector(),
));
}
// 7. Warehouse 테스트
// TODO: 나머지 화면 테스트들도 BaseScreenTest 형식으로 마이그레이션 필요
if (_shouldIncludeScreen('Warehouse')) {
screenTests.add(WarehouseScreenTest(
apiClient: apiClient,
getIt: getIt,
testContext: TestContext(),
errorDiagnostics: errorDiagnostics,
autoFixer: autoFixer,
dataGenerator: dataGenerator,
reportCollector: ReportCollector(),
));
}
return screenTests;
}
@@ -418,7 +455,7 @@ class MasterTestSuite {
buffer.writeln('- **테스트 날짜**: ${DateTime.now().toLocal()}');
buffer.writeln('- **총 소요시간**: ${_formatDuration(totalDuration)}');
buffer.writeln('- **실행 모드**: ${options.parallel ? "병렬" : "순차"}');
buffer.writeln('- **환경**: Production API (https://api-dev.beavercompany.co.kr)');
buffer.writeln('- **환경**: Production API (${RealApiTestHelper.baseUrl})');
buffer.writeln('');
buffer.writeln('## 📈 전체 결과');
@@ -563,7 +600,7 @@ class MasterTestSuite {
'duration': totalDuration.inMilliseconds,
'environment': {
'platform': 'Flutter',
'api': 'https://api-dev.beavercompany.co.kr',
'api': RealApiTestHelper.baseUrl,
'executionMode': options.parallel ? 'parallel' : 'sequential',
},
},
@@ -595,7 +632,7 @@ class MasterTestSuite {
_log('\n🧹 테스트 환경 정리 중...');
try {
// await RealApiTestHelper.teardownTestEnvironment();
await RealApiTestHelper.teardownTestEnvironment();
_log('✅ 환경 정리 완료\n');
} catch (e) {
_log('⚠️ 환경 정리 중 에러: $e\n');