37 lines
1.5 KiB
Dart
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);
|
|
});
|
|
}
|