2011-06-02 135 views
6

使用Visual Studio 2010 C++。我正在试验单元测试,并决定尝试Google Test(gtest)。我有一个编译为MFC可执行文件的现有项目(我也对如何测试编译为DLL的项目感兴趣)。我对单元测试惯例的理解是,你应该为你的测试创建一个新的独立项目。所以我在单元测试的相同解决方案中创建了一个新项目。但我如何链接项目?我可以从我的测试项目中测试我的exe项目的任意函数/方法吗?Visual Studio C++:谷歌测试的单元测试exe项目?

传统的做法是什么?

+0

相关问题基本上问我,当我搜索了这个问题并没有发现同样的事情:http://stackoverflow.com/questions/2680892/how-do-you-run-your-unit-tests-compiler-flags-static-libraries – User 2011-06-02 22:38:01

回答

6

将要测试的功能放到一个静态库中,该静态库链接到您的测试项目和您的MFC项目中,或者将您的文件放入这两个项目中。首先是比较复杂的,但第二个将导致你编译两遍....

+0

第一种选择是我们已经完成的工作,它运行良好。我认为第二个选项会很快让人烦恼,除了小的或很少变化的项目:) – Jan 2011-06-02 16:14:57

+0

你是什么意思把文件放在这两个项目?你是说在两个项目中都有这些文件的副本,还是说你要在磁盘上将同一个文件添加到这两个项目中? – User 2011-06-02 16:15:38

+0

@User我希望符号链接或硬链接 – alternative 2011-06-02 16:37:00

8

我认为组织统一测试的最好办法是:

  • 不要改变你的主要项目。结构应该独立于您的测试行为。在我看来,将你的项目改为一个大的静态库和一个可执行文件实际上并不优雅。 相反,添加一个构建后操作来将所有obj文件聚合到一个静态lib文件中,该文件将仅由您的测试项目使用。

  • 创建一个简单的测试项目,链接到您的测试框架和先前生成的静态库。

  • 享受。

主要优点是您不需要触摸您想测试的项目,也不需要将所有源代码包含到测试项目中。

要看看你能怎么办,对于Visual Studio中,你可以看到这个帖子:Linking to multiple .obj for unit testing a console application

2

我已经准备了一个GitHub库包括比利的回答parralel的Visual Studio 2015年解决方案。您可以直接使用它,而无需任何额外的要求或依赖性。

https://github.com/fuatcoskun/GoogleTestVS2015

我希望它可以帮助...

+0

当我建立这个时,我看不到输出。有什么想法吗?我需要在某处添加一个getchar()来暂停输出吗? – JC203 2017-03-09 16:20:55