如何在 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 测试项目的主要内容,如果未能解决你的问题,请参考以下文章