gpt4 book ai didi

c++ - 对类型为 boost::variant 的对象进行单元测试

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:50 26 4
gpt4 key购买 nike

我有一个看起来像这样的单元测试:

typedef boost::variant<std::vector<std::string, ...> > Container;
TEST_F (TestAppend, emptyContainer)
{
Container container((std::vector<std::string>()));
Append append("stringValueToAppend");
boost::apply_visitor(append(), container);
...
}

我需要测试容器是否仍然是 std::vector<std::string>() 类型申请了访客。然后我需要提取 vector<string>从变体中提取以测试其内容。

做这两件事的便捷方法是什么?

RTTI 已启用。

最佳答案

您可以使用 boost::get 来检查 boost::variant 是什么类型。如果您传入一个指针,那么如果变体不是您请求的类型,它将返回 NULL

所以你可以这样做:

ASSERT_TRUE( boost::get< std::vector<std::string> >( &container ) != NULL );

或者你可以传入一个引用而不是一个指针,它会抛出一个bad_get异常

Documentation is here for more information

关于c++ - 对类型为 boost::variant 的对象进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12798083/

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