我有一个包含几个项目的解决方案(一个 MFC 应用程序和其他的是 DLL 项目)。是否可以添加另一个控制台应用程序项目 (BOOST TEST) 以对特定 DLL 项目进行单元测试,而无需修改生产 MFC 应用程序中的任何内容并成功构建整个解决方案?
我只希望测试控制台应用程序作为后期构建运行,然后启动生产 MFC 应用程序。
最佳答案
我在 test-driven development in C++ 上写了一系列博文逐步向您展示如何使用 Visual Studio 和 Boost.Test 在 C++ 中执行 TDD。这些步骤对于您的情况几乎相同,除了您的控制台测试项目依赖于 DLL 项目而不是我在文章中使用的静态库项目。
如果我对您的理解正确,您希望构建解决方案来编译和运行测试。如果您说“在调试器中构建并运行”(F5),您想要编译所有代码,运行测试,然后在测试通过时运行应用程序。这并不难。
按照我的博文中的概述设置控制台单元测试程序,这将使单元测试项目编译并作为构建的一部分运行。因此,如果您在 Visual Studio 中说“在调试器中构建并运行”(F5),它将构建解决方案,然后运行启动项目,例如您的 MFC 应用程序。由于解决方案包含单元测试控制台可执行项目,因此它将构建该项目。单元测试项目具有执行测试的构建后步骤,因此测试将作为构建的一部分运行。
因为您的单元测试可执行文件依赖于 DLL,您需要确保可执行文件在运行时找到 DLL。您可能需要在构建后步骤中添加额外的命令,以便在运行测试可执行文件之前将 DLL 复制到必要的目录。您可以通过将单元测试项目设置为启动项目并在调试器中运行它来验证它是否正常工作。
在配置管理器中仔细检查所有项目都设置为针对您的平台和配置组合构建。有时,如果您在添加新项目时在解决方案中自定义了这些,则不会自动检查是否在自定义平台/配置组合中进行编译。
如果这对您不起作用,请添加评论或编辑您的问题以包含有关不起作用的更多细节。
关于c++ - 拥有包含用于单元测试的 MFC 项目和控制台应用程序的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33409378/