【问题标题】:Visual C++ class testingVisual C++ 类测试
【发布时间】:2009-08-16 16:50:46
【问题描述】:

有什么方法可以轻松地以 java 方式测试 C++ 类。

在java中你可以添加静态函数main并直接从IDE运行

class Foo{
  ...
  public static void main(String args[])
  {
     System.out.println("Test class foo here");
  }
}

是否可以在 Visual C++ 中实现?

当然你可以创建另一个项目,但这是不好的解决方案(你应该创建项目,然后将其添加到解决方案中或运行另一个 Visual Studio 副本)

另一种方法是修改 main() 函数,或 CWinApp::InitInstance() 但如果您更改文件 Foo.h,VS 会根据项目重建所有文件(我们只想测试 Foo.h 和 Foo.cpp)

我创建的最好方法是创建另一个项目(控制台),将 Foo.h 和 Foo.cpp 添加到其中,将公共静态函数 run() 添加到我的类 Foo 并从控制台项目中的 main() 函数运行它像这样

//unitTester.cpp
include "Foo.h"
int main(...){
  Foo::run();
  return 0;
}

这样我可以单独测试我的类 Foo(无需重新编译大项目)

【问题讨论】:

    标签: c++ debugging visual-c++ class


    【解决方案1】:

    当我想编写单元测试时,我通常会添加另一个项目,该项目链接测试代码 + 正在测试的类。我使用Boost Test Library 编写的测试代码,其中nicely integrates with Visual Studio。我使我的实际项目依赖于测试项目。测试项目将其可执行文件作为构建后步骤运行。因此,只要测试失败,我什至无法构建主项目。

    【讨论】:

      【解决方案2】:

      我使用的解决方法是使用#define 来决定应用程序处于什么模式。

      我通常有一个 def.h 文件,它会有

      #define TEST
      

      然后在你写的主文件上,

      #ifdef TEST
          // test code
      #else
          // main code
      #endif
      

      如果为了测试您需要在多个地方更改内容,则此条件检查也可以在多个地方进行。如果此测试代码还需要更改多个文件,您只需在这些源文件中包含 def.h。

      希望对你有帮助

      【讨论】:

      • 您还可以创建多个项目配置:Release Main、Debug Main、Release Test、Debug Test。然后,后两者将在他们的项目设置中#define TEST。
      • 这很酷。我应该试试看。我相信它在 NetBeans 中也是可能的,因为我使用的 NetBeans 比 Visual Studio 更多
      【解决方案3】:

      使用Boost Test Library。如果您的应用程序有一个 GUI,那么它有点难以集成,但一旦它工作,编写测试就非常简单明了。

      【讨论】:

        猜你喜欢
        • 2017-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-24
        • 2017-08-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多