1

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

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 已启用。

4

1 回答 1

0

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

所以你可以做这样的事情:

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

或者,您可以传入引用而不是指针,它将引发bad_get异常

文档在这里以获取更多信息

于 2012-10-09T11:43:24.533 回答