CATCH、Google Test 、およびその他のフレームワークでテストをスキップする方法がないため(少なくとも、そうする理由を指定して出力で確認する従来の意味では)、それが必要かどうかを考えさせられました (私は過去のプロジェクトでUnitTest++を使用してきました)。
通常、デスクトップ アプリで何かをスキップする理由はありません。テストするかしないかのどちらかです。ただし、ハードウェアに関しては、保証できないものもあります。
たとえば、2 つのデバイスがあります。1 つにはビーパーが組み込まれていますが、もう 1 つにはありません。UnitTest++ では、システムにクエリを実行し、ビープ音を使用できないことを確認し、ビープ音に依存するテストをスキップします。もちろん、CATCH でも同様のことができます。初期化中にシステムにクエリを実行し、「ビープ音」タグ ( CATCHの特別な機能) を持つすべてのテストを除外するだけです。
ただし、わずかな違いがあります: テスター (私以外の誰か) は出力を読み、言及されているオプションのテストを見つけられません (一方、UnitTest++ ではそれらはスキップされたとマークされ、その理由は出力の一部として提供されます) )。彼の最初の考え:
- これは、テスト アプリの古いバージョンである必要があります。
- スイート X を有効にするのを忘れたのかもしれません。
- 何かが壊れている可能性があります。開発者に問い合わせる必要があります。
- 待ってください、多分彼らはちょうどスキップされました. しかし、なぜ?とにかく開発者に聞いてみます。
さらに、実際にはスキップされるべきではないのに、それらのテストがスキップされたことに気付かなかった (つまり、ビープ音の有無に関係なく、OS は「false」を返します。これは重大なバグです)。1 つのオプションは、「スキップされた」テストを合格としてマークすることですが、それは不必要な回避策のように感じます。
私が気付いていない巧妙なテクニックはありますか (つまり、オプションのテストをスタンドアロン プログラムに完全に分離することはわかりません)? そうでない場合-UnitTest ++に固執する必要がありますか? それは仕事をしますが、コードの繰り返しを避けるのに役立つCATCH のSECTIONsとtagsが本当に好きです。