带有OpenGL和嵌入式WebViews的本机移动应用程序(iOS/Android)的测试框架
Test Framework for native mobile apps (iOS/Android) with OpenGL and Embedded Webviews
我有一个跨平台移动应用程序:
- 90%写在跨平台C
- 其中8%是平台依赖性(GUI代码)。对于iOS,我们使用目标C。对于Android,我们使用Java。
- 其中2%是嵌入式WebViews(Webkit Webhooks)。
找到适当的测试框架一直具有挑战性。
我们可以使用C Google测试框架进行大量测试。尽管如此,我们想进行端到端测试(例如硒),该测试在OpenGL视图和WebView周围拖动/双击。
我已经看了Appium和Selenium,可以测试除了OpenGL接口(启动WebViews)以外的所有内容,但我找不到开OpenGL测试的任何示例。
是否有一个很好的框架来测试OpenGL应用程序?
我已经为C (Linux上的QT)&编写了单位测试。OpenGL之前。我不知道有任何理由也不适合Java。
对我有用的东西是:
-
摘要您的OpenGL上下文提供商,因此您的其余代码独立于其。在我的情况下,主要应用程序使用了QT的QGLWIDGET,但是Unitests使用了基于Pbuffer的QGLWIDGET,我可以在没有窗口基础结构的情况下创建它(除了指定的X11显示器外)。后来,我添加了一个"屏幕外台面"(纯软件OpenGL实现),以便他们甚至在没有GPU的无头构建机器上工作。
-
将OpenGL代码独立于您的GUI代码。就我而言,OpenGL"渲染引擎"对QT类别(例如鼠标事件)一无所知。定义您自己的可测试API,该API与任何特定的GUI概念没有绑定,并为其编写测试。
-
在Unittests中,使用GlreadPixels从Framebuffer中读取内容,然后用一些关于哪些像素应该是特定值的断言,或者沿回归测试路线沿着回归测试路线进行比较,然后将framebuffer捕获与存储的捕获进行比较您知道的图像很好(要么是通过手动验证,要么是因为它是由其他参考模型产生的)。
-
在任何图像回归测试中都允许一些模糊性;大多数OpenGL实现都会产生略有不同的输出。
-
(我没有这样做,但是...)理想情况下,您希望能够通过断言它使渲染引擎的预期呼叫顺序以响应GUI活动来测试GUI层。如果这样做,并且您由于上述测试而对渲染层有信心...好吧,无需实际进行渲染。因此,在GUI测试时创建一个合适的渲染层的模拟对象(我想像"鼠标从这里拖动到那里)的测试会导致调用渲染层以设置特定的变换矩阵" ...类似的东西)。
希望它有帮助!我在..Ref. Automated测试openGL应用程序
- 使用 适用于 Android 和 iOS 的 tf-lite C++ API
- 使用C++创建UDP服务器以嵌入跨平台iOS和Android应用程序中
- 将移动设备(iOS和Android)连接到带有QT / C++和镜像显示的VNC服务器
- 如何监控Android和iOS上的所有击键操作,如Windows键盘记录器
- C++ vs iOS / Android的本机实现
- 拥有LLVM IR库如何从Ubuntu将其交叉编译到iOS,Android,Windows和Mac?
- Visual Studio共享库(Android,iOS)标题在Mac上找不到
- 如何在跨平台C++中以毫秒为单位获得系统启动/启动时间(它应该在Windows / IOS / Android / MA
- Android 和 IOS 上的 Qt 会话管理
- 适用于 iOS 和 Android 的 QT C++ 中的 HTTPS 请求
- 如何使用来自Xamarin(Android和iOS)的OpenCV
- 转到QT C 应用上Android/ios上下载的设备根路径
- 通过在Android(和iOS)上使用QT绘制具有3D效果的2D线
- iOS和Android的C 中的文件操作
- 我可以将c++库打包为适用于移动IOS/Android的Adobe Air原生扩展吗
- 不能在 Visual Studio 2015 的共享库(Android、iOS)中使用 nullptr
- 带有OpenGL和嵌入式WebViews的本机移动应用程序(iOS/Android)的测试框架
- 不满意的链接错误在iOS但不是Android上,loadLibrary总是成功的
- 为跨平台OpenGL ES 2.0+引擎选择语言和设计 - iOS & Android
- libuv(node.js的异步库)可以在Apple IOS / Android上运行吗?