2016-04-06 3 views
0

私は、そのコンストラクタで6つのブール引数を取り、それらの引数の状態に基づいて計算を実行する単純なクラスを持っているとしましょう。キャッチを使用したテストケースの組み合わせ爆発を含む

すべてのケースを適切にテストするためにキャッチを使用する場合は、64個の個別のユニットテストが必要です。

今、将来のある時点で、第7番目のブール値の引数を追加します。今度は、書かなければならないテストケースの数が128に倍増しました。

私のユニットテストは、2^nテストケースをすべて自動的に "生成"する方法がありますか?単一のテスト仕様?

答えて

1

あなたは自動的にあなたの関数が取るboolsのすべての異なる組み合わせを歩くためにキャッチのgenerators一部を使用することができます。

TEST_CASE("where is my sandwich", "[hunger][food]") 
{ 
    bool wantLettuce = GENERATE(Values(false, true)); 
    bool wantTomato = GENERATE(Values(false, true)); 
    bool wantBacon = GENERATE(Values(false, true)); 
    bool wantCheese = GENERATE(Values(false, true)); 
    bool wantEgg = GENERATE(Values(false, true)); 

    CHECK(sandwichAssembler(wantLettuce, wantTomato, wantBacon, wantCheese, wantEgg)); 
} 

IIRC、これはすべての組み合わせを試す2^5回を実行するためのキャッチが発生します。

...しかし、私はあなたがしたいことすべてがすべての組み合わせを行使していると仮定しています。実際に出力が何らかの期待に合っているかどうかを確認したい場合は、もっと多くのことを行う必要があります。

(これはテストしていません - バルセロナのカフェでサンドイッチを待っている間にメモリから呼び出す)

関連する問題