flutter架 构项目基础
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
// 集成测试:真机/模拟器上跑完整 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);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user