使用 C++ Boost.Test 组织单元测试?

Organization of unit tests with C++ Boost.Test?

本文关键字:单元测试 Test C++ Boost 使用      更新时间:2023-10-16

我一直在阅读有关单元测试的文章,我对如何组织不同程序组件的测试有点困惑。我假设每个类通常都有自己的一组单元测试。㞖:

  1. 每个要测试的类都应该有自己的单元测试.cpp文件吗?
  2. 如何将所有单元测试.cpp文件组合在一起?
  3. 单元测试文件是否进入其自己的单独 VS 项目?如果是这样,它是在需要时手动运行,还是可以以某种方式连接到您的实际项目?
  4. 测试服的目的是什么?

这都是你的选择。

  1. 如果你想要黑盒测试,当然。我还做过白盒测试,其中单元测试 CPP 包括静态定义也包含在实现 cpp (.ipp(

  2. 只需链接包含测试的对象文件,就像您通常所做的那样。 带有测试的静态库也可以。

  3. 他们通常会这样做。当然,您可以将所有文件(包括测试(放在程序和测试运行程序所依赖的单个项目/库中。

    但通常最好不要在主程序中链接/包含测试。这不仅如此

    • 减小尺寸
    • 降低信息泄露的风险(例如测试夹具数据/详细信息(

    它还使您可以自由地为测试添加您不想包含在已部署软件中的依赖项(例如模拟框架,SQLite(

  4. 目的正是组织您的测试。假设您是否在多个翻译单元中进行了与"文本文件导入"相关的测试。

    特别是测试套件

    • 可以嵌套,
    • 就像命名空间一样(在多个翻译单元中打开相同的"套件"命名空间会合并该单个套件中的所有测试(
    • 可以具有"全局"设置/拆卸和标签