C++ unittestingにはCppUnit
とboost::test
の両方を使用しました。一般的に、私はboost::test
を好んでいます。主に自動テストマクロはテストのセットアップにかかる労力を最小限に抑えるからです。しかし、私が本当に逃しているのは、CppUnit
です:あなた自身の "プロテクター"を登録する能力、そのインスタンスは自動的にすべてのテストをラップします。 (技術的には、テスト「リスナー」をインストールし、各テストをプロテクタースコープにラップすることができます)。boost :: testのCppUnitプロテクタに相当しますか?
ユニットテストで予期しない副作用が発生したことを監視していたことは、これまで非常に貴重でした(たとえば、チェックコードが浮動小数点ユニットの状態フラグを変更していないなど)。私はboost::test
documentationに相当するものは見当たりませんが、BOOST_FIXTURE_TEST_CASE
はおそらく最も近いでしょう。
boost::test
でCppUnitのプロテクターと同じことを達成するにはどうすればよいですか?
(まだ私はboost::test
の実装をまだ見ていませんが、それがCppUnit
のようなものなら、それはプロテクター自体のようなものを使用しなければなりません)。
のCppUnitのリスナー/プロテクターは、中(または周りに)あなたにRAIIスコープ検査の利便性を与えたい
各テストが、なしそれぞれのテストにコードの行を退屈に追加する必要があります。グローバル・フィクスチャーへのポインタありがとうございました。各テスト実行でctor/dtorが呼び出された場所があれば完璧ですが、BOOST_AUTO_TEST_CASEをすべてBOOST_FIXTURE_TEST_CASEでグローバル置換しないでプロテクターのようなものを構築することなく付属の什器をチェックするのが最善の策だと思われます。 – timday
ああ、私はそれを得ると思います。このRAIIオブジェクトをテストごとに明示的に指定しなくても、すべてのテストスイートに1つのテストケースをラップすることができますか? 私のベスト・ベットは、最初の行にプロテクター・オブジェクトを挿入してBOOST_FIXTURE_TEST_CASEに展開する簡単なラッパー・マクロです。 – jalf
興味深い考えですが、役に立つ追加のように聞こえます。 Boostライブラリの著者にお気軽にお寄せください; – jalf