尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
react-native-vision-camera 真机测试怎么做:让每台手机替你把相机回归跑绿
react-native-vision-camera 真机测试怎么做让每台手机替你把相机回归跑绿【免费下载链接】react-native-vision-camera A powerful, high-performance React Native Camera library.项目地址: https://gitcode.com/GitHub_Trending/re/react-native-vision-camerareact-native-vision-camera 是 React Native 的高性能相机库。这篇带你读懂它的真机自动化测试怎么用 react-native-harness 在真手机上跑 Jest 风格用例、怎么把回归挂在每次提交上、CI 红了怎么排查。为什么相机测试必须上真机你八成踩过这个坑capturePhoto在模拟器里秒过一上三星真机就黑图一上某安卓机型 HEIC 直接崩。相机不是纯 JS 逻辑它背后是 AVFoundation 和 CameraX 两套完全不同的原生管线模拟器根本没有那套 SoC 和传感器所以在模拟器跑绿约等于没测。这个项目的答案是把测试直接搬进真机用 react-native-harnessCI 则把它们丢到 AWS Device Farm 的真机池里跑。一句话心智模型这里没有模拟相机这种偷懒做法测的就是真机红了就是真红。三步在真机上跑起第一个相机测试整套测试跑在 monorepo 里示例 App 在 apps/simple-camera/。下面这条链最短装依赖 构建 debug APK只需一次bun install --frozen-lockfile cd apps/simple-camera bun run build:android装到手机、授权相机权限权限每次重装都要重给adb install -r android/app/build/outputs/apk/debug/app-debug.apk adb shell pm grant com.margelo.nitro.camera.example.simple android.permission.CAMERA跑套件先只看拍照那一片HARNESS_ANDROID_DEVICE_MANUFACTURER$(adb shell getprop ro.product.manufacturer) \ HARNESS_ANDROID_DEVICE_MODEL$(adb shell getprop ro.product.model) \ bun run test:harness:android -- --testPathPatternsphoto跑完你看到的是每个it(...)的 PASS / FAIL / SKIP 列表外加一份 JUnit XML。SKIP 会带上原因比如photoHDR: not supported on this device这正是它和假装跳过的区别——跳过是带证据的。配置入口是 rn-harness.config.mjsdefaultRunner默认androiddetectNativeCrashes: true意味着原生层崩溃也会被 Harness 捕获上报而不是悄悄吞掉。按要验证什么组织测试用例别用单元/集成/E2E这种类型词分文件夹——这个项目按要验证的行为分文件每个.harness.ts对应VisionCamera命令式 API 的一片。目录与覆盖面的映射见tests/README.md。正确性单个 API 的输出契约目的证明一个操作真的干了活而不只是返回了个对象。看 visioncamera.photo.harness.ts 的拍照片段const photo await photoOutput.capturePhoto( { flashMode: off, enableShutterSound: false }, {}, ) expect(photo.width).toBeGreaterThan(0) expect(photo.containerFormat).toBe(jpeg) photo.dispose() // 大图原 buffer用完就放判断这是不是好断言有个狠标准如果把实现 stub 成throw new Error(TODO)还能过那你测的是类型系统不是相机。所以别写typeof x number这种——Nitro 桥在原生侧早就该抛了。模块协作多输出会话不打架目的同一个会话里 photo video frame 三种输出并存时谁也不会把谁的硬件状态弄脏。看 visioncamera.multi-output.harness.ts它专门验证录制进行中替换某个输出、其余输出仍挂着这种最容易出竞态的场景。这里的关键纪律是每个it自建自己的 session跑完必须stop()不能靠beforeAll里建一个全局会话共享。硬件状态一旦泄漏到下一个用例红绿就全乱了。真实用户链路坐标换算与组件生命周期目的验证跨层数据闭环。visioncamera.coordinates.harness.tsx 把点从 Frame 坐标 → Camera 坐标 → View 坐标做一遍往返矩阵一退化立刻被抓到visioncamera.camera-view.harness.tsx 则只测Camera这个高层封装的生命周期与isActive不重复命令式 API 已经测过的东西。这条线的分层原则底层 API 测深高层组件测它有没有正确把底层串起来不重叠。两条贯穿始终的契约硬要求用expect软要求用context.skip。设备不支持某功能比如没 HDR就该带原因跳过而不是硬断言让它红。能力位都挂在CameraDevice/CameraController上如supportsPhotoHDR。等事件别轮询。session.isRunning在安卓上异步更新要await session.addOnStartedListener(...)不要sleep(500)猜它好了。sleep只允许用在录制时长本身就是被测行为的地方。把测试挂到每次提交CI 红了怎么排查配置在 .github/workflows/harness-aws-device.yml。你提交后不会立刻看到测试通过四个字而是这套流水线detect-changes先按改动路径决定跑不跑 Android/iOS然后分别构建、上传到 Device Farm 真机执行。它只在动了 packages/ 或示例 App 时才触发省真机费用。配完你会看到什么两个平台各一条Test Android/Test iOSjob跑完产出harness output log每个用例的 JS 控制台全量输出和 JUnit XML 两份 artifact。红了怎么排查按这个顺序最快现象先做什么job 直接失败、没日志确认detect-changes是不是把你的改动判进了shared没进就不会跑某itFAIL下载harness output loggrep FAIL看堆栈再打开 JUnit XML 看结构化摘要一堆 SKIP 但没 FAIL读 skip 原因确认是你的测试机缺能力还是用例写错了能力位怀疑原生崩溃Harness 开了detectNativeCrashes日志里会有原生栈本地复现就挂adb logcat流式看本地想稳定复现某条直接bun run test:harness:android -- --testPathPatterns文件名只跑那片即可。踩坑速查表问题原因解法第一个用例就红在cameraPermissionStatusadb install -r重装后权限失效重跑pm grant给相机/麦克风/定位断言isRunning一直 false安卓上该状态异步更新改等addOnStartedListener别 sleep 轮询用例间互相污染、时红时绿上一片没stop()会话硬件状态泄漏每个it自建 session 并stop()/dispose()某功能在某机型必然红你拿硬断言测了软功能换成context.skip带原因能力位查device.supports*大图用完内存暴涨Photo/Frame/Image握着原生 buffer用完立刻.dispose()平台差异导致一个平台红用Platform.OS分支把差异藏了保留共享用例让差异暴露真差异才开平台 guard效率清单优先测核心路径拍照、录像、坐标换算这三条先跑绿再铺长尾功能。每个 bug 报告都落成一个会红的it(...)随修复同分支合入别再开独立复现仓库。断言写行为不写类型rejects.toThrow()、toBeCloseTo()优先于手动Math.abs。缺 API 写不了的就it.skip加 TODO等 API 落地直接翻绿别删。失败先拉harness output log再grep FAIL别在 CI 日志里瞎翻。读完这套你手上就是一个改坏capturePhoto下个 PR 自动变红的回归网。想深入就翻 apps/simple-camera/tests/README.md 的完整契约核心被测的公共 API 在 packages/react-native-vision-camera/src/。【免费下载链接】react-native-vision-camera A powerful, high-performance React Native Camera library.项目地址: https://gitcode.com/GitHub_Trending/re/react-native-vision-camera创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

从Shell到Node.js:everything-claude-code五个Hook脚本重写迁移全记录

从Shell到Node.js:everything-claude-code五个Hook脚本重写迁移全记录

从Shell到Node.js:everything-claude-code五个Hook脚本重写迁移全记录 【免费下载链接】everything-claude-code Claude Code toolkit - agents, commands, skills, rules, and hooks for productive AI-assisted development 项目地址: https://gitcode.com/GitH…

📅 2026/9/18 23:41:40
14自由度车辆模型与BP神经网络逆系统的解耦控制策略

14自由度车辆模型与BP神经网络逆系统的解耦控制策略

简介:电动汽车纵横向动力学解耦控制是车辆工程与控制领域的研究热点。围绕“建模仿真—控制算法—闭环验证”的完整技术路线,这份资料用1个docx文档呈现了全部内容:先基于ADAMS-Car建立整车模型并分析不同工况下的耦合影响,再构建…

📅 2026/9/18 23:41:40
制造数据资产运营平台:从哑数据到可决策业务资产

制造数据资产运营平台:从哑数据到可决策业务资产

简介:本资源是一份面向制造行业数字化转型从业者的专业级需求方案PPT,适用于企业数据治理负责人、工业互联网平台架构师及智能制造项目规划人员,聚焦解决制造业普遍存在的数据孤岛、质量参差、安全风险等核心痛点。文件为单页PPTX格式&#x…

📅 2026/9/18 23:41:40
MORE NEWS

更多资讯

📰

SRDQN赋能多级供应链库存优化:从啤酒游戏到可部署决策

简介:本资源是一份面向科研人员与1–3年经验研发工程师的深度强化学习实践指南,聚焦供应链库存优化这一经典难题,以啤酒游戏为载体,系统复现并详解SRDQN算法在多级分散式供应链中的创新应用。资源直击牛鞭效应建模痛点&#xff0c…

📰

TiXL(t3) ShaderGraph:用节点图可视化构建 Field 场,从连线到光线步进渲染

TiXL(t3) ShaderGraph:用节点图可视化构建 Field 场,从连线到光线步进渲染 【免费下载链接】t3 TiXL is an open source software to create realtime motion graphics. 项目地址: https://gitcode.com/GitHub_Trending/t3/t3 TiXL 是一款开源的实时动态图形(Realtime M…

📰

把 Claude Code逆向工程研究的 LLM 配置改到 TaoToken 之后,跑通 50,000 行混淆代码的架构还原

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

NestJS 控制平面下的 Daytona,Agent 靠 TaoToken 补 Base URL

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Unity SBP中Prefab修改引发依赖风暴的原理与优化

1. 项目概述:为什么一个Prefab的微小改动会让Unity编译时间从30秒跳到8分钟?“SBP依赖计算中的蝴蝶效应:一个Prefab修改如何触发全量重建?”——这个标题不是夸张修辞,而是我在Pico4开发Unity项目时真实踩过的坑。那天…

📰

UI设计师简历简洁排版全攻略:从Word设置到HTML/CSS模板

简介:一份面向应届 UI 设计师求职场景的简历模板文档,以简洁版式呈现,适用于需要快速投递作品集或岗位申请的视觉设计、交互设计专业学生。内容着重展示候选人核心优势:涵盖 Cinema4D、After Effects、Photoshop、Illustrator 等主…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬