我刚刚开始使用TDD,并对其他人进行测试的方式感到好奇。作为引用,我使用的是Google测试框架,但我认为该问题适用于大多数其他测试框架以及C/C++以外的语言。

到目前为止,我的一般方法是做以下三件事之一:

  • 在静态库中编写大部分应用程序,然后创建两个可执行文件。一个可执行文件是应用程序本身,另一个是所有测试的测试运行器。两者都链接到静态库。
  • 将测试代码直接嵌入到应用程序本身中,并使用编译器标志启用或禁用测试代码。这可能是我到目前为止使用的最好的方法,但是使代码有些困惑。
  • 将测试代码直接嵌入到应用程序本身中,并在给定某些命令行开关的情况下运行应用程序本身或运行应用程序中嵌入的测试。

  • 这些解决方案都不是特别优雅...

    您如何呢?

    最佳答案

    我倾向于使用静态库而不是dll,因此我的大多数C++代码最终还是以静态库结尾,并且正如您所发现的,它们与dll一样容易测试。

    对于内置到exe中的代码,我有一个单独的测试项目,该项目仅包含正在测试的源文件,这些文件通常内置在exe中,或者我构建了一个包含大多数exe的新静态库,并在我测试所有其他静态库的方式相同。我发现在对现有应用程序进行测试改造时,我通常会采用“库中的代码最多”的方法来处理新项目,并采用“将exe项目中的源文件拖入测试项目中”的方法。

    我完全不喜欢您的选项2和3。管理2的构建配置可能比拥有一个单独的测试项目(仅提取所需的源并将所有测试包含到exe中)要难,就像您在3中建议的那样;)

    07-28 02:12
    查看更多