【问题标题】:How to define Boosts tests to run in code?如何定义 Boosts 测试以在代码中运行?
【发布时间】:2015-03-11 15:48:20
【问题描述】:

使用 Boost.Test 我试图在代码中指定 BOOST_TESTS_TO_RUN 环境变量,以便只执行一些测试。使用#define BOOST_TESTS_TO_RUN

命令行参数--run_tests 工作正常。但我想通过环境变量来实现,以便拥有一个 main.cpp,我可以在其中选择不同的套件和模块。

但我不确定如何指定它或在哪里指定。是否应该在包括提升之前?如果我有不同的 cpp 文件和不同的测试套件怎么办?

module_A.cpp

#include "SomeHeader.h"
#define BOOST_TESTS_TO_RUN // ??
#include "boost/test/unit_test.hpp"
BOOST_AUTO_TEST_SUITE( moduleA );
BOOST_AUTO_TEST_CASE( test1 ){}
BOOST_AUTO_TEST_CASE( test2 ){}
BOOST_AUTO_TEST_CASE( test3 ){}
BOOST_AUTO_TEST_SUITE_END();

【问题讨论】:

    标签: c++ unit-testing boost boost-test


    【解决方案1】:

    Boost UTF 不是这样设计的。如果您真的想从代码中启用/禁用某些测试,您可以对所有测试使用手动注册并定义一个主测试套件,您需要在其中手动注册所有测试。请参阅master-test-suite 文档和其他有关手动测试注册的页面。然后,您可以注释掉您不想运行的某些测试。

    但是,我不推荐这种方法。忘记测试太容易了,因此更难维护。对于调试,您可以轻松地手动运行测试可执行文件并使用命令行参数。

    【讨论】:

      【解决方案2】:

      改为查看 --run_test 的新文档,该文档解释了环境变量 BOOST_TEST_RUN_FILTERS 可以用于此(也存在于以前版本的 boost 中,但环境变量的用法从文档中不太明显)。

      基本上,您只需对所有测试(默认启用)编译一次main.cpp,然后从BOOST_TEST_RUN_FILTERS 环境变量中选择性地运行它们。

      我认为这样做没有问题,尤其是 wrt。 boost.test的设计。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-23
        • 1970-01-01
        • 2017-12-15
        • 2014-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-17
        相关资源
        最近更新 更多