visualc&x2B+;类测试 有没有方法可以很容易地用java方式测试C++类。p>

visualc&x2B+;类测试 有没有方法可以很容易地用java方式测试C++类。p>,c++,debugging,visual-c++,class,C++,Debugging,Visual C++,Class,在java中,您可以添加静态函数main并直接从IDE运行它 class Foo{ ... public static void main(String args[]) { System.out.println("Test class foo here"); } } 在Visual C++ ++?/P>中有可能做到这一点吗? 当然,您可以创建另一个项目,但这是一个糟糕的解决方案(您应该创建项目,然后将其添加到解决方案或运行Visual Studio的另一个副本) 另一

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

class Foo{
  ...
  public static void main(String args[])
  {
     System.out.println("Test class foo here");
  }
}
在Visual C++ ++?/P>中有可能做到这一点吗? 当然,您可以创建另一个项目,但这是一个糟糕的解决方案(您应该创建项目,然后将其添加到解决方案或运行Visual Studio的另一个副本)

另一种方法是修改main()函数或CWinApp::InitInstance(),但若您更改了文件 根据项目的不同,VS将从项目中重建所有文件(我们只想测试Foo.h和Foo.cpp)

我创建的最佳方法是创建另一个项目(console),将Foo.h和Foo.cpp添加到其中,将公共静态函数run()添加到我的类Foo中,然后像下面这样从console项目中的main()函数运行它

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

通过这种方式,我可以单独测试我的类Foo(无需重新编译大项目)

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

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

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

我通常有一个def.h文件

#define TEST
然后在你写的主文件上

#ifdef TEST
    // test code
#else
    // main code
#endif
如果要进行测试,您需要在多个地方进行更改,则此条件检查也可以在多个地方进行。如果此测试代码还需要在几个文件中进行更改,那么您所要做的就是在这些源文件中包含def.h


希望这有帮助

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

我通常有一个def.h文件

#define TEST
然后在你写的主文件上

#ifdef TEST
    // test code
#else
    // main code
#endif
如果要进行测试,您需要在多个地方进行更改,则此条件检查也可以在多个地方进行。如果此测试代码还需要在几个文件中进行更改,那么您所要做的就是在这些源文件中包含def.h


希望这有助于使用。如果您的应用程序有GUI,那么集成起来就有点困难,但是一旦它工作起来,编写测试就非常简单和直接了。

使用。如果您的应用程序有GUI,集成起来就有点困难,但一旦它工作起来,编写测试就非常简单和直接。

您还可以创建几个项目配置:Release Main、Debug Main、Release Test、Debug Test。然后,后两者将在项目设置中定义测试。这很酷。我应该试试看。我相信这在NetBeans中也是可能的,因为我使用的NetBeans比Visual Studio更多。您还可以创建几个项目配置:Release Main、Debug Main、Release Test、Debug Test。然后,后两者将在项目设置中定义测试。这很酷。我应该试试看。我相信这在NetBeans中也是可能的,因为我使用的NetBeans比VisualStudio更多