本主题说明如何准备 C++test 以执行现有的手动编写的 CppUnit 测试用例。在 C++test 中运行 CppUnit 测试用例可让您集中进行单元测试和报告。C++test 的报告和作者推算功能可帮助团队跟踪哪些测试用例失败,失败的时间以及由谁负责解决每个失败。

团队可以每晚在命令行模式下运行这些测试。为了即时获得对代码的更改是否破坏了现有功能的反馈,每个开发人员都可以导入因其修改导致的回归失败。由于回归失败会被指派给相应的开发人员,因此修复这些问题的整体过程比起所有开发人员查看同一份回归失败列表而言更加高效。

此外,C++test 提供了 CppUnit 测试用例的测试覆盖率信息,并且在执行时还可以进行运行时错误检测。

章节目录:

访问测试

配置 C++test 访问您手动编写的 CppUnit 测试用例的步骤:

  1. 确保 CppUnit 测试用例文件在项目树中存在。
    • 测试目录可以位于任何位置,只要存在于项目树中即可。默认情况下,C++test 期望测试存储在项目的 tests 目录的子目录中。但是,您可以使用其他位置,只要相应修改测试配置的测试套件文件的搜索模式设置(执行> 常规选项卡)即可。

    • 如果不想将测试存储在项目目录中,则可以添加一个文件夹,链接到存储在文件系统中其他位置的文件。操作步骤:
      1. 选择文件> 新建> 文件夹(或者选择 文件> 新建> 其他,选择常规> 文件夹,然后点击下一步)。
      2. 点击高级按钮。
      3. 启用链接到其他位置选项。
      4. 输入或浏览源文件的位置。
      5. 点击完成
     2. 选择 Parasoft>测试配置打开测试配置对话框。

     3. 选择表示您要执行 CppUnit 测试的用户自定义测试配置的测试配置分类。

     4. 打开执行选项卡。

     5. 在常规子选项卡中,根据需要修改测试套件文件的搜索模式设置,以便 C++test 可以找到并测试 CppUnit 测试。

    • 请确保在目录路径的末尾添加星号(*)。

     6. 点击应用关闭以提交修改的设置。

使用该测试配置运行某个测试时,将会执行这些测试。

需求/限制

导入的测试用例必须满足以下条件:

  • CppUnit 测试类必须具有 CPPUNIT_NS::TestFixture 或 CPPUNIT_NS::TestCase 作为其基类。
  • CppUnit 测试类不能是模板类。
  • CPPUNIT_TEST_SUITE_REGISTRATION(TestSuiteName) 宏应插入到 CppUnit 源文件(.cpp)中。
  • 支持以下 CppUnit 宏:
    • CPPUNIT_TEST_SUITE(ATestFixtureType)
    • CPPUNIT_TEST_SUITE_END()
    • CPPUNIT_TEST_SUITE_NAMED_REGISTRATION
    • CPPUNIT_TEST(testMethod)
    • CPPUNIT_TEST_EXCEPTION(testMethod, ExceptionType)
    • CPPUNIT_TEST_FAIL(testMethod) CPPUNIT_ASSERT(condition)
    • CPPUNIT_ASSERT_MESSAGE(message, condition)
    • CPPUNIT_FAIL(message)
    • CPPUNIT_ASSERT_EQUAL(expected, actual)
    • CPPUNIT_ASSERT_EQUAL_MESSAGE(message, expected, actual)
    • CPPUNIT_ASSERT_DOUBLES_EQUAL(expected, actual, delta)
    • CPPUNIT_ASSERT_THROW(expression, ExceptionType)
    • CPPUNIT_ASSERT_NO_THROW(expression)
    • CPPUNIT_TEST_SUITE_REGISTRATION(ATestFixtureType)
  • 导入的 CppUnit 测试用例的上下文将设置为 'project'

从构建中排除测试用例

如果某个给定的 CppUnit 文件没有从构建中排除,那么:

  • 将对该测试文件执行静态分析。
  • 将从该测试文件中报告覆盖率。
  • 将在该测试文件中对函数调用进行打桩。
  • 将为该测试文件创建自动生成的测试。

因此,我们建议从构建中排除 CppUnit 文件。但是,该操作不是必需的。

从构建中排除 CppUnit 文件的过程取决于项目的选项源(在 C++test 构建设置中设置):













  • 如果项目设置为“使用 Managed Make C/C++ 项目中的选项”,则右键点击包含 CppUnit 方法定义的源文件,选择属性,然后转到 C/C++ 构建>从构建中排除。然后,对包含 CppUnit 类的头文件重复相同的配置。



  • 如果项目设置为“手动指定所有选项”,则右键点击包含 CppUnit 方法定义的源文件,选择属性,然后转到 Parasoft> C++test> 构建设置> 从构建中排除。然后,对包含 CppUnit 类的头文件重复相同的配置。



  • 对于任何其他选项源,仅当文件的构建选项在原始构建系统(Makefile、.dsp 等)中不可用时,该文件才会被排除。例如,当您打开 C++test 附带的 ATM 项目时,CppUnit 测试套件将自动从构建中排除,因为它不是 ATM 项目 Makefile 的一部分。

  • No labels