Files
App.K12.Student.Miniapp_Flu…/integration_test/app_smoke_test.dart
T
2026-09-04 15:22:20 +08:00

37 lines
1.5 KiB
Dart

// 集成测试:真机/模拟器上跑完整 App 冒烟
//
// 与 flutter test 的区别:
// 单元/Widget 测试跑在 Dart 虚拟机里(无原生插件,靠 mock);
// 集成测试跑在【真实设备】上,插件/网络/文件系统都是真的,
// 专门验证"代码 + 原生环境"组合起来能不能正常跑。
//
// 运行(需要先插手机或开模拟器):
// flutter test integration_test -d <device-id>
// 查看设备:flutter devices
//
// 注意:不经过 main(),所以 Token 不会从磁盘回填(DioClient.accessToken
// 初始为 null)→ go_router 守卫把 / 踢到 /login,首帧是登录页。
// 这就是"真机启动 → 登录守卫"的端到端验证。
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:new_learn/core/app.dart';
void main() {
// 集成测试必须最先调用(把测试绑定到真实设备渲染环境)
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
testWidgets('真机冒烟:App 启动 → 未登录重定向到登录页', (WidgetTester tester) async {
await tester.pumpWidget(const ProviderScope(child: TabApp()));
// 真机上等守卫 redirect + 首帧渲染完成
await tester.pumpAndSettle();
expect(find.text('立即登录'), findsOneWidget);
expect(find.text('爱学蝶变'), findsOneWidget);
// 未登录不该看到主框架 tab
expect(find.text('任务'), findsNothing);
});
}