【问题标题】:Unit testing , approval testing and datafiles单元测试、批准测试和数据文件
【发布时间】:2009-06-09 17:22:49
【问题描述】:

(暂且不说这是集成测试还是单元测试。)

我宁愿首先进行大规模测试。如果我的应用程序编写了一个与参考文件相同的 VRML 文件,那么 VRML 导出器就可以工作,那么我就不必对代码中的每个语句都运行单元测试。我还想通过比较屏幕截图来使用它进行某种程度的穷人 gui 测试。

是否有集成此类测试的单元测试框架(理想情况下适用于 C++) - 或者至少可以轻松地与单元测试集成?

编辑。似乎更好的术语是批准测试。那么是否还有其他包含批准测试的单元测试框架?

【问题讨论】:

    标签: c++ unit-testing


    【解决方案1】:

    看看我的几个朋友写的Approval Tests。不是 C++,但它是您所追求的总体概念,也称为 Golden Master 测试。好东西,不管是不是单元测试。

    【讨论】:

    • 谢谢,这是我一直在寻找的一些概念。
    【解决方案2】:

    Kitware,对于 VTK,使用CDash 进行大部分测试。它的许多测试本质上与此相似——它们写出渲染模型的图像,并将其与参考图像进行比较。

    此外,他们有代码专门处理由于不同的显卡驱动程序/制造商/等而导致的参考图像的非常细微的差异。可以编写测试以将参考图像与一些容差进行比较。

    【讨论】:

      【解决方案3】:

      好的,我认为您对单元测试代码的性质做出了错误的假设;你的声明

      如果我的应用编写的 VRML 文件是 与参考相同,然后 VRML 导出器有效,我没有 在每一个上运行单元测试 代码中的语句。

      如果您希望对您的代码进行验证测试,这是完全正确的,但请注意,这种类型的测试与实际的单元测试完全不同。单元测试用于测试单个代码单元;它们不存在用于验证目的。根据您的环境,您可能根本不需要单元测试,但请记住,验证测试(测试整个程序输出的有效性)和单元测试(测试各个代码单元是否按预期工作)是完全不同的事情.

      (请注意,我真的不想对此挑剔;另外,您可以使用大量单元测试框架来实现此结果;但请记住,您所写的并不是真正的“单元测试”,尽管它们是在单元测试框架中运行的。)

      【讨论】:

      • 单元测试是为了自动捕捉错误。我对应用程序运行良好但一个导出器失败的代码进行了更改,因为它依赖于处于某种状态的特定索引 - 我没有注意到这些是耦合的,因此不会编写单元测试.但是输出文件错误是立即红灯。在这种情况下,它是一个插件 - 因此可以与主代码分开测试,这让我想到了单元测试。
      • @mgb:单元测试可用于自动捕获错误,但这不是它们的唯一目的。想想TDD;单元测试在那里有完全不同的目的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多