首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Visual C++类测试

Visual C++类测试
EN

Stack Overflow用户
提问于 2009-08-16 16:50:46
回答 3查看 670关注 0票数 1

有没有什么方法可以用java的方式轻松地测试C++类?

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

代码语言:javascript
运行
复制
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()函数运行它,如下所示

代码语言:javascript
运行
复制
//unitTester.cpp
include "Foo.h"
int main(...){
  Foo::run();
  return 0;
}

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-16 17:01:10

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

票数 4
EN

Stack Overflow用户

发布于 2009-08-16 17:02:11

我使用的变通方法是使用#define来决定应用程序处于哪种模式。

我通常有一个def.h文件,它应该是

代码语言:javascript
运行
复制
#define TEST

然后在您编写的主文件中,

代码语言:javascript
运行
复制
#ifdef TEST
    // test code
#else
    // main code
#endif

如果您需要在多个位置更改内容,则也可以在多个位置执行此条件检查。如果此测试代码还需要在多个文件中进行更改,那么您所要做的就是在这些源文件中包含def.h。

希望这能有所帮助

票数 0
EN

Stack Overflow用户

发布于 2009-08-17 10:54:26

使用Boost Test Library。如果你的应用程序有一个GUI,那么集成起来就有点困难,但是一旦它工作了,编写测试就变得非常简单和直接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1284744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档