gpt4 book ai didi

unit-testing - boost 单元测试 - 列出可用的测试

转载 作者:行者123 更新时间:2023-12-05 00:36:05 28 4
gpt4 key购买 nike

我编写了一些脚本来自动运行我们的单元测试,使用 boost 单元测试框架编写。我想添加功能以允许选择和随后运行所有测试的子集。我知道我可以使用 run_test 参数运行测试的子集,但是我找不到列出编译二进制文件中的所有测试的方法,即我可以传递给 run_test 的所有参数值。有没有办法提取所有可用的测试,还是我必须编写自定义测试运行程序?如果是这样,我从哪里开始?

最佳答案

boost::test 内部的文档可能有点缺乏,也就是说一切都可用。

查看 boost::test 头文件,特别是 test_suite 和 test_unit 类。有一个名为 traverse_test_tree 的函数可用于遍历已注册的测试。

下面是我写的一些以特定格式输出测试结果的示例代码,它使用 traverse_test_tree 输出每个测试的结果,希望它能给你一个良好的开端....

/**
* Boost test output formatter to output test results in a format that
* mimics cpp unit.
*/
class CppUnitOpFormatter : public boost::unit_test::output::plain_report_formatter
{
public:
/**
* Overidden to provide output that is compatible with cpp unit.
*
* \param tu the top level test unit.
* \param ostr the output stream
*/
virtual void do_confirmation_report( boost::unit_test::test_unit const& tu,
std::ostream& ostr );
};


class CppUnitSuiteVisitor : public test_tree_visitor
{
public:
explicit CppUnitSuiteVisitor( const string& name ) : name_( name )
{}

virtual void visit( const test_case& tu )
{
const test_results& tr = results_collector.results( tu.p_id );
cout << name_ << "::" << tu.p_name << " : " << ( tr.passed() ? "OK\n" : "FAIL\n" );
}
private:
string name_;
};

// ---------------------------------------------------------------------------|
void CppUnitOpFormatter::do_confirmation_report(
test_unit const& tu, std::ostream& ostr )
{
using boost::unit_test::output::plain_report_formatter;

CppUnitSuiteVisitor visitor( tu.p_name );
traverse_test_tree( tu, visitor );

const test_results& tr = results_collector.results( tu.p_id );
if( tr.passed() )
{
ostr << "Test Passed\n";
}
else
{
plain_report_formatter::do_confirmation_report( tu, ostr );
}
}

关于unit-testing - boost 单元测试 - 列出可用的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8550704/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com