6

C++ の単体テスト コードで、2 つのベクトルを比較する必要がある場合、一時的なベクトルを作成して期待値を格納します。

std::vector<int> expected({5,2,3, 15});
EXPECT_TRUE(Util::sameTwoVectors(result, expected));

1行にしていいですか?Pythonでは、「[...]」でリストを生成できます。

sameTwoVectors(members, [5,2,3,15])
4

2 に答える 2

3

を受け取る初期化子リスト コンストラクターstd::vector含まれているため、関数が値によるベクトル、右辺値参照、または参照を受け入れる限り、統一された初期化構文を使用できます。std::initializer_listsameTwoVectorsconst

namespace Util
{
    bool sameTwoVectors(
        const std::vector<int>& result,
        const std::vector<int>& expected)
        {
            return result == expected;
        }
}


int main()
{
    std::vector<int> result;

    EXPECT_TRUE(Util::sameTwoVectors(result, {5,2,3,15}));
}

オプションでsameTwoVectors、単純な比較のみを行う場合は、それを削除できます。を呼び出すときに、代わりに比較式を使用するだけですEXPECT_TRUE。トレードオフはstd::vector<int>、暗黙的な変換コンストラクターに依存するのではなく、明示的に指定する必要があることです。数文字少なく、予想される結果が少し明確になります。

EXPECT_TRUE(result == std::vector<int>({5,2,3,15}));
于 2013-06-16T01:47:57.240 に答える
1

Util::sameTwoVectorsconst 参照または単なる値を期待する場合( C++11のサポートを前提として) そのように記述します

EXPECT_TRUE(Util::sameTwoVectors(result, std::vector<int>{5, 2, 3, 15}));
于 2013-06-16T01:46:13.443 に答える