0

コンストラクターで 6 つのブール値の引数を取り、それらの引数の状態に基づいて計算を実行する単純なクラスがあるとします。

Catch を使用してすべてのケースを適切にテストしたい場合、64 個の個別の単体テストが必要になります。

さて、将来のある時点で、7 番目のブール引数を追加するとします。これで、私が書かなければならないテスト ケースの数は 2 倍の 128 になりました。

単一のテスト仕様から 2^n 個のテスト ケースをすべて自動的に "生成" するような方法で単体テストを作成する方法はありますか?

4

1 に答える 1

1

Catch のジェネレーター部分を使用して、関数が取る bool のさまざまな組み合わせをすべて自動的に調べることができます。

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 これにより、すべての組み合わせを試行して Catch が 2^5 回実行されます。

...しかし、あなたがやりたいことは、すべての組み合わせを実行することだけだと思います。それぞれのケースで出力が何らかの期待を満たしていることを実際に検証したい場合は、さらに多くのことを行う必要があります。

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

于 2016-04-07T20:55:52.037 に答える