使用Boost::Test测试DLL? 我正在开发C++中的DLL,希望使用Boost测试库执行DLL的单元测试。我彻底阅读了Boost测试手册,但由于我是新手,我有以下问题:

使用Boost::Test测试DLL? 我正在开发C++中的DLL,希望使用Boost测试库执行DLL的单元测试。我彻底阅读了Boost测试手册,但由于我是新手,我有以下问题:,c++,unit-testing,visual-c++,boost-test,C++,Unit Testing,Visual C++,Boost Test,我应该在开发DLL的同一个VC项目中添加测试类吗?。理想情况下,我想这样做,但我不明白DLL没有main(),另一方面,Boost测试需要自己的main()来执行。那么,在这种情况下,Boost测试的输出会去哪里呢?(事实上,我实际上实现了这一点,但没有看到任何结果:(我几乎花了两天的时间来解决问题,但没有成功) 问候, Jame。您可以先将DLL构建为静态库文件。然后您可以使用它直接编译最终的DLL,并创建包含boost测试的可执行文件。下面是使用boost.build的示例: lib lib

我应该在开发DLL的同一个VC项目中添加测试类吗?。理想情况下,我想这样做,但我不明白DLL没有
main()
,另一方面,Boost测试需要自己的
main()
来执行。那么,在这种情况下,Boost测试的输出会去哪里呢?(事实上,我实际上实现了这一点,但没有看到任何结果:(我几乎花了两天的时间来解决问题,但没有成功)

问候,


Jame。

您可以先将DLL构建为静态库文件。然后您可以使用它直接编译最终的DLL,并创建包含boost测试的可执行文件。下面是使用boost.build的示例:

lib lib_base
    : # sources
        $(MAIN_SOURCES).cpp  # Sources for the library.
    : # requirements
        <link>static
    : : ;

lib dll_final
    : # sources
        lib_base
        $(DLL_SOURCES).cpp   # Sources for DllMain .
    : # requirements
        <link>shared
    : : ;

unit-test test_exe
    : # sources
        lib_base
        $(TEST_SOURCES).cpp  # Sources for the unit tests.
    : # properties
        <library>/site-config//boost/test
    ;
lib\u库
:#来源
$(主要来源)。cpp图书馆的来源。
:#要求
静止的
: : ;
库dll_最终版本
:#来源
lib_基地
$(DLL#U源)。DllMain的cpp#源。
:#要求
共享
: : ;
单元测试
:#来源
lib_基地
$(测试源)。单元测试的cpp源。
:#财产
/站点配置//boost/test
;

你必须小心,不要在你的工作中有任何重要的逻辑,但这通常是很重要的。

你有三种方法可以做到这一点:

  • 你完全可以按照另一个回复的建议,将你的库构建为静态库。不过我不推荐这种方式

  • 您的解决方案中可以有一个或多个单独的单元测试项目。这些项目将与您的库以及Boost测试库的静态或共享版本相链接。每个项目都有一个由Boost.test库提供或由您手动实现的主测试

  • 最后,您还有另一个选择,您可以将测试用例直接放入库中。您需要链接到共享版本的Boost test。构建库后,您可以像现在一样定期使用它,并且您将能够执行内置的测试用例。要执行测试用例,您需要一个测试运行程序。Boost test提供了一个名为“console test runner”的测试运行程序。您需要构建一次它,并且可以用于所有项目。使用此测试运行程序,您可以如下方式执行单元测试:

    test_runner.exe--测试“your_lib”.dll

    您应该了解这种方法的所有优点和缺点。您的单元测试代码将成为生产库的一部分。这将使它稍微大一点,但另一方面,如果需要,您可以在生产中运行测试


  • 在哪里可以找到console test runner BoostTest耗材?