Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有OpenGL和嵌入式WebView的本机移动应用程序(iOS/Android)测试框架_Android_C++_Ios_Testing_Opengl Es - Fatal编程技术网

带有OpenGL和嵌入式WebView的本机移动应用程序(iOS/Android)测试框架

带有OpenGL和嵌入式WebView的本机移动应用程序(iOS/Android)测试框架,android,c++,ios,testing,opengl-es,Android,C++,Ios,Testing,Opengl Es,我有一个跨平台的移动应用程序: 90%使用跨平台C编写++ 其中8%依赖于平台(GUI代码)。对于iOS,我们使用Objective C。对于Android,我们使用Java 其中2%是嵌入式WebView(WebKit+Webhooks) 找到一个合适的测试框架一直是一个挑战 我们可以用C++谷歌测试框架进行大量的测试。尽管如此,我们还是希望进行端到端测试(如Selenium),在OpenGL视图和Webview中拖动/双击 我已经看过了Appium和Selenium,它们可以测试除了Op

我有一个跨平台的移动应用程序:

  • 90%使用跨平台C编写++
  • 其中8%依赖于平台(GUI代码)。对于iOS,我们使用Objective C。对于Android,我们使用Java
  • 其中2%是嵌入式WebView(WebKit+Webhooks)
找到一个合适的测试框架一直是一个挑战

<>我们可以用C++谷歌测试框架进行大量的测试。尽管如此,我们还是希望进行端到端测试(如Selenium),在OpenGL视图和Webview中拖动/双击

我已经看过了Appium和Selenium,它们可以测试除了OpenGL接口(激发WebVView)之外的所有东西,但是我找不到任何OpenGL测试的例子


<> Po>是否有一个测试OpenGL应用程序的好框架?< /P> < P>我以前编写过C++单元测试(Linux上的Qt)和OpenGL。我不知道它为什么不适合Java

对我起作用的是:

  • 抽象您的OpenGL上下文提供程序,以便代码的其余部分独立于它。在我的例子中,主应用程序使用了Qt的QGLWidget,但unittests使用了基于pbuffer的应用程序,我可以创建它,而无需任何窗口基础设施(除了指定的X11显示)。后来我添加了一个“屏幕外Mesa”(纯软件OpenGL实现),这样他们甚至可以在没有GPU的无头构建机器上工作

  • 保持OpenGL代码独立于GUI代码。在我的例子中,OpenGL“渲染引擎”对Qt类一无所知(例如鼠标事件)。定义您自己的可测试API,它与任何特定的GUI概念无关,并为其编写测试

  • 在单元测试中,使用glReadPixels从帧缓冲区读回内容,或者用一些关于哪些像素应该是特定值的断言来点击它们,或者沿着回归测试路线,将帧缓冲区捕获与您知道是好的存储图像进行比较(或者是手动验证,或者是因为它是从其他参考模型生成的)

  • 允许在任何图像回归测试中有点模糊;大多数OpenGL实现产生的输出略有不同

  • (我没有这样做,但是…)理想情况下,您希望能够测试GUI层,方法是断言它会对您的渲染引擎进行预期的调用序列,以响应GUI活动。如果它这样做,并且由于上述测试,您对渲染层有信心…那么,无需实际执行渲染。因此,为渲染层创建一个合适的模拟对象用于GUI测试(我可以想象“鼠标从这里拖动到那里会导致调用渲染层来设置特定的变换矩阵”之类的测试)

希望能有帮助!我在……上找到的。。 参考文献