c++ - 在 Visual Studio 2012 中对 exe 中的 C++ 代码进行单元测试时阻力最小的路径

标签 c++ unit-testing visual-studio-2012

我在这里需要一些明智的建议。长话短说,我正在重建一个 - 对我来说 - 由大约 7000 行代码组成的相对复杂的应用程序。当我创建我的应用程序的第一个迭代时,我遇到了很多问题,在我看来,测试驱动的开发可能只是门票。

我很高兴看到 Visual Studio 2012 现在原生支持 C++ 中的 TDD,所以我继续阅读尽可能多的内容。不幸的是,Vs2012 是相当新的,我觉得文档有点缺乏。但这有点离题。我主要依赖 MSDN 站点上的以下指南:

http://msdn.microsoft.com/en-us/library/hh419385.aspx#objectRef

它相当清楚地指出,如果要将测试中的代码构建为 .exe,那么接下来的方法是创建一个单独的测试项目并链接输出目标文件。我猜他们是指目标文件?或者可能不是?

老实说,对于我需要链接多少个 .obj,我有点困惑。起初我以为我需要链接每个单独的 obj 文件,这相当繁琐。

如果有人有这方面的经验并且也许还可以推荐使用哪些宏或类似的快捷方式以使这个过程尽可能轻松,我将非常感激!

最佳答案

这将取决于您如何构建解决方案。我喜欢构建解决方案的方式是拥有三个项目。

  • 一个包含我的源代码的 .lib 项目。
  • 一个可执行项目,与 .lib 链接。这会在 main() 调用
  • 中调用 .lib
  • 一个测试项目 (exe),与 .lib 链接。

使用此结构,您可以使用 Common Properties 部分中的 Add New Reference... 按钮,然后将为您对引用进行排序( header 包含路径除外)在 C++\General\Additional include 目录中找到)。

如果您不想重组您的项目,您可以将每个 obj 文件告诉链接器(Linker\Input\Additional dependencies)。如果您有很多要测试的类,这可能是大量的 .obj 文件。不幸的是,如果您使用预编译的 header ,您可能会遇到问题。

如果可以的话,我会建议重组项目。

关于c++ - 在 Visual Studio 2012 中对 exe 中的 C++ 代码进行单元测试时阻力最小的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16100650/

相关文章:

c++ - Pthreads 和信号 C++

opencv - OpenCV代码错误-为RtlFreeHeap指定的地址无效

c++ - BOOST.TEST 在 dll 和 exe 中运行 BOOST 测试用例时遇到问题

sql - 更改自动生成的序列

c# - 是否可以使用非托管 C 库从 C# 程序集中使用 CRT 库?

c# - Microsoft Visual Studio 2012 无法在 c# 文件中设置断点

c++ - ERROR_NOT_ENOUGH_MEMORY 使用 WritePrivateProfileString 写入 INI 时出错,调用 200k 次后

c++ - 为什么每帧 4 像素上的 80 fps 对我来说滞后?

c++ - C1001 : An internal error has occurred in the compiler when including <boost/shared_ptr. hpp>

unit-testing - 使用 Thymeleaf 模板引擎对服务进行单元测试时出现问题