c++ - OpenGL 如何进行单元测试?

标签 c++ c unit-testing opengl

是否有使用 OpenGL 命令对函数或类进行单元测试的好方法?

对于 C++,我知道我可以将类作为模板并传递一个类来执行直接的 opengl 调用:

namespace myNamespace
{
struct RealOpenglCall
{
  static inline void glVertex2fv( const GLfloat * v)
  { ::glVertex2fv( v ); }
};

template< typename T >
class SomeRendering
{
  public:
    SomeRendering() : v()
    {
      // set v
    }
    void Draw()
    {
      T::glVertex2fv(v);
    }
    GLfloat v[4];
};

}

在 C 和 C++ 中,我可以将函数指针传递给调用 opengl 函数的函数(然后为了单元测试将指针传递给模拟函数)。

我也可以链接到不同的库(而不是 opengl),但这听起来很复杂。

那么,还有哪些其他技术可以对调用 opengl 函数的代码进行单元测试?

最佳答案

这是我不久前学到的一个好技巧。您可以使用常规的旧 #define 来模拟各种 API 函数:

#ifdef _test_
#define glVertex3f(x,y,z)  (mockGlVertex3f((x),(y),(z)))
...
#endif

使用配置的预处理器。根本不需要更改您的绘图功能。此外:您可以以这样的方式实现 mockGlVertex3f检查参数或计算对其的调用次数,稍后可以对其进行检查。

关于c++ - OpenGL 如何进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5271022/

相关文章:

c++ - 自动,错误 : map iterator has no member named ‘first`

c++ - C++中用于动态编程的动态数组

c++ - 两个 `std::map` 的交集

c++ - 使用ar将静态库合并到Makefile中

c++ - BlackBerry 10 Development Switch 外壳

c - 将 C 翻译为 mips 汇编

Android:为 Fragments 编写测试用例

java - Junit Mockito 将 SessionFactory 模拟到 DAO 测试类中

python - 我如何自动指定在 python 3 中默认为 None 的模拟属性?

c - 以编程方式从控制台屏幕缓冲区大小设置禁用 "Wrap text output on resize"(C)