如何在 Visual Studio 2010 中设置单独的 Boost 测试项目

Posted

技术标签:

【中文标题】如何在 Visual Studio 2010 中设置单独的 Boost 测试项目【英文标题】:How to setup seperate Boost Test project in Visual Studio 2010 【发布时间】:2013-01-12 04:40:29 【问题描述】:

我想使用 Boost Test 在 Visual Studio 2010 中对我的代码进行单元测试。我已经下载并构建了最新版本的库。

我在这里和互联网上的其他地方阅读了很多关于该主题的内容,人们似乎建议在您的解决方案中专门为您的测试提供第二个项目。

很好,听起来不错。但是,我在实际设置时遇到了麻烦。我还没有找到关于设置它的最佳方法的明确解释。

我是否需要使用项目引用来使我的单元测试项目引用我的主项目? 如果是这样,我是否还需要在我的单元测试项目的属性中添加我的主项目的 Include & Source 目录?如果是这样,首先使用项目参考有什么好处?

我是否必须让我的主项目输出一个库以供我的单元测试项目链接?再一次,我认为项目参考会使这变得不必要,但似乎我并不真正了解项目参考。

如果可能的话,我能否获得一个非常白痴的证明,逐步在 VS2010 中与主项目一起设置 Boost Test 单元测试项目?

我最好还是使用这里列出的方法(一个项目,构建测试的不同配置或实际项目 exe): http://blog.yastrebkov.com/2010/07/boost-test-setup-and-usage.html

非常感谢,

【问题讨论】:

【参考方案1】:

设置 Boost.Test 项目并没有什么神奇之处。也许是因为它是一个常规的 C++(可执行)项目,与“普通”应用程序没有任何不同。我就是这样做的:

    创建一个新的 C++ 项目。我总是选择带有预编译头文件的 Win32 可执行文件。我有一个命名约定,所有使用 Boost.Test 的测试项目都以“tests.boost.testee_name...”开头 在"stdafx.h" 中,为<boost/unit_test.hpp> 添加包含并定义BOOST_TEST_MODULE(我总是选择项目名称)。此外,为该项目所需的外部组件添加所有其他包含,例如其他 boost 库、stl 头文件等。这会大大加快编译时间。 受测者必须是库(动态或静态)。所以“添加引用”到所有必需的依赖项。您当然可以测试仅标头库,在这种情况下不要添加引用。 根据 Boost.Test 手册将源文件添加到您的测试项目中。我强制执行的约定是每个文件一个 BOOST_FIXTURE_TEST_SUITE。 为方便起见,我有一个为 boost 单元测试量身定制的自定义属性表,我将其添加到每个 boost 测试项目中。除其他外,它还包含一个运行测试的构建后事件。

我必须补充一点,最近,我使用 Visual Studio 2012 切换到 MSTest,它允许以更舒适的方式管理测试和测试结果。尽管如此,对于软件最重要的部分,我仍在编写增强测试,以确保与旧工具集和可能的其他平台的正确性。

干杯,

保罗

【讨论】:

项目参考只是确保项目的构建顺序正确吗?在这种情况下,确保在测试项目之前构建库(如有必要)。设置参考根本不考虑链接吗?我还需要设置我的测试项目配置以与库链接吗? 是和不是。添加引用也需要链接的情况。 好的。谢谢。并且被测试者必须是一个库,只是为了方便将其链接到 Boost Test 项目,对吗?如果我的最终目标是制作一个可执行的应用程序,我需要一个与库链接以生成可执行文件的第三个项目(使用 main() ),因此:库项目、测试项目和最终的 exe 项目。 test proj 和 final exe proj 都添加了对 library proj 的引用并将其链接进去? (1)。是的。您应该将应用程序逻辑的相关部分放入库中。使它们可测试只是这样做的一个很好的理由。 (2) 是的。在默认配置中,boost.test 项目是可执行文件。它创建了自己的入口点(主要),因此您不需要(不应该)创建自己的入口点。

以上是关于如何在 Visual Studio 2010 中设置单独的 Boost 测试项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2010 中设置环境变量?

如何在 Visual Studio 2010 中设置 Qt 路径?

如何在 Visual Studio 2010 中设置单独的 Boost 测试项目

如何在 Visual Studio 2010 安装项目中设置“以管理员身份运行”权限? [复制]

如何在 Visual Studio 2010 的 C++ googletest 项目中设置代码覆盖率

opencv:如何在 Visual Studio 2005 中设置项目依赖项?