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