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>次に、その内容をテストするために、バリアントからを抽出する必要があります。

これら2つのことを行うための便利なアプローチは何ですか?

RTTI が有効になっています。

4

1 に答える 1

0

boost::getを使用して、どのタイプであるかを確認できますboost::variant。ポインターを渡すとNULL、バリアントが要求したタイプでない場合に返されます。

したがって、次のようなことができます。

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

または、ポインターではなく参照を渡すと、bad_get例外がスローされます

詳細については、ドキュメントはこちら

于 2012-10-09T11:43:24.533 に答える