問題タブ [catch-unit-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2339 参照

c++ - テスト ケースの順序をキャッチ

CatchTEST_CASEで複数の s の実行順序を保証できますか? LLVM を使用していくつかのコードをテストしていますが、明示的に初期化する必要があるいくつかの卑劣なグローバル状態があります。

現在、次のようなテスト ケースが 1 つあります。

私が望むのは、それを 3 つにリファクタリングすることですTEST_CASE

  • 1 つはコンパイルに合格する必要があるテスト用で、
  • 1 つは失敗するはずのテスト用であり、
  • 1つは解釈に合格する必要があるテスト用です(将来的には、おそらくそのような分割がさらに行われるでしょう)。

しかし、不便なグローバルを設定する前にTEST_CASEそれが呼び出された場合、それらは初期化されず、テストは誤って失敗するため、単純にテスト内容を別の内容に移動することはできません。TEST_CASE

0 投票する
2 に答える
1187 参照

c++ - C++ の例外と BDD - Catch ライブラリ

私はこれまで Boost.Test を使用してきましたが、代わりに Catch で BDD を使用することを検討していますが、例外を処理する適切な方法を見つけるのに苦労しています。次のようなテストがあるとします。

connect() が適切な方法で例外をスローするという事実を処理する方法を考えています。例外を保存して try-catch に保存し、THEN の下で検証できると思いますが、それはあまり良くないようです。Boost.Test テストケースでは、次のようにしました。

しかし、それは非常に BDD ではないようです。BDD テストを使用する場合、例外をスローするコードを通常どのように処理しますか?

0 投票する
2 に答える
809 参照

unit-testing - オプションのテストの処理

CATCHGoogle Test 、およびその他のフレームワークでテストをスキップする方法がないため(少なくとも、そうする理由を指定して出力で確認する従来の意味では)、それが必要かどうかを考えさせられました (私は過去のプロジェクトでUnitTest++を使用してきました)。

通常、デスクトップ アプリで何かをスキップする理由はありません。テストするかしないかのどちらかです。ただし、ハードウェアに関しては、保証できないものもあります。

たとえば、2 つのデバイスがあります。1 つにはビーパーが組み込まれていますが、もう 1 つにはありません。UnitTest++ では、システムにクエリを実行し、ビープ音を使用できないことを確認し、ビープ音に依存するテストをスキップします。もちろん、CATCH でも同様のことができます。初期化中にシステムにクエリを実行し、「ビープ音」タグ ( CATCHの特別な機能) を持つすべてのテストを除外するだけです。

ただし、わずかな違いがあります: テスター (私以外の誰か) は出力を読み、言及されているオプションのテストを見つけられません (一方、UnitTest++ ではそれらはスキップされたとマークされ、その理由は出力の一部として提供されます) )。彼の最初の考え:

  • これは、テスト アプリの古いバージョンである必要があります。
  • スイート X を有効にするのを忘れたのかもしれません。
  • 何かが壊れている可能性があります。開発者に問い合わせる必要があります。
  • 待ってください、多分彼らはちょうどスキップされました. しかし、なぜ?とにかく開発者に聞いてみます。

さらに、実際にはスキップされるべきではないのに、それらのテストがスキップされたことに気付かなかった (つまり、ビープ音の有無に関係なく、OS は「false」を返します。これは重大なバグです)。1 つのオプションは、「スキップされた」テストを合格としてマークすることですが、それは不必要な回避策のように感じます。

私が気付いていない巧妙なテクニックはありますか (つまり、オプションのテストをスタンドアロン プログラムに完全に分離することはわかりません)? そうでない場合-UnitTest ++に固執する必要がありますか? それは仕事をしますが、コードの繰り返しを避けるのに役立つCATCH のSECTIONstagsが本当に好きです。

0 投票する
1 に答える
1806 参照

c++ - 「Catch」情報のログバッファを取得または出力する方法は?

Catch single-include unit-testerを使用して、このような(合格)テストがあります

ドキュメント(上記のリンク)には、INFOがバッファに記録されると記載されていますが、バッファをダンプまたは取得する方法がわかりません。メッセージはコンソールに出力されませんが、私がprintf押し込んだり出力したりcoutする他のものは出力cerrorされるため、I/O は正しく設定されています。メッセージがどこに格納されているかを知るためにソースを読んでみましたが、大きくて複雑です。誰かがたまたまメッセージを取得する方法を知っているのだろうか?

0 投票する
1 に答える
445 参照

c++ - C/C++ でフィクスチャ データを整理し、テストからアクセスする方法

次の場合、テスト コードでデータ フィクスチャ ファイルへのパスを計算するにはどうすればよいですか。

  • test/{main.cpp,one_test.cpp,two_test.cpp}
  • で行われたコンパイルbuild/
  • test/fixtures/{conf_1.cfg}

私が直面している問題は次のとおりです。

これまでに見つけた解決策は、構成時にマクロを定義することです。

wscript私のwithで得られる

__FILE__に拡張された他の試みが含まれていました../test/one_test.cppが、使用できませんでした。

背景: Catch testing frameworkwaf build tool を使用しています。

おそらくテストフレームワークに依存する、一般的な慣行またはパターンはありますか?

0 投票する
3 に答える
3996 参照

c++ - 単体テスト ライブラリのリンク エラーをキャッチする

以下にリンクされている CATCH 単体テスト スイートを使用しようとしています。 https://github.com/philsquared/Catch

しかし、私はそれを正しくすることができません。main.cpp と test.cpp は次のとおりです。

この 2 つのファイルが同じフォルダーにある場合、目的の結果を得ることができました。ただし、 をtest.cppという名前のサブディレクトリに移動しましたtest。期待どおりに機能しなくなりましたが、リンク エラーが発生します。

私のcmake設定を以下に説明します。

file(GLOB_RECURSE INCS "./*.cpp")サブディレクトリにあるすべての cpp ソース ファイルを含めるために追加されました。のinclude_directories(.)定義を知らせるために含まれていましたcatch.hpp

私は何か間違ったことをしたと確信していますが、それを修正する方法がわかりません。この問題を解決するために私にアドバイスしてください。

Windows 上で実行され、mingw gcc-4.9.1 を使用してコンパイルされ、cmake ninja ジェネレーターによって生成されました。

編集: エラー メッセージの最初の数行を追加しました。

失敗しました: cmd.exe /c cd 。&& C:\MinGW\bin\g++.exe CMakeFiles/catchTest.dir/main.cpp.obj CMakeFiles/catchTest.dir/main.cpp.obj CMakeFiles/catchTest.dir/test/testTest.cpp.obj -o catchTest. exe -Wl,--out-implib,libcatchTest.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 - loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd . CMakeFiles/catchTest.dir/main.cpp.obj:main.cpp:(.text+0x0): `Catch::getResultCapture()' の複数定義

CMakeFiles/catchTest.dir/main.cpp.obj:main.cpp:(.text+0x0): 最初にここで定義

0 投票する
1 に答える
63 参照

catch-unit-test - 追加のアクションを挿入して、テストを繰り返す良い方法はありますか?

Catch がテストのネストされた階層を持っている方法が気に入っており、組み合わせによって機能します。xUnit フレームワークのセットアップ/ティアダウンよりも自然に感じられます。

私は今、一連のテストを持っています。私がやりたいことは、ロード/セーブシリアライゼーションテストを挿入し、そのポイントより下のすべてのテストを、最初はロード/セーブせずに、次にシリアライゼーションプロセスからロードしたデータを使用して繰り返すことです。つまり、ロード/セーブが正しかったことを証明するためです。

Catch がこれに役立つ何かを持っている場合、私は頭を悩ませることができませんか? @dependsphpUnit の場合、一連のテストについて考え@dataProvider、ブール値の入力で a を使用します。少し醜い。

(それが意味をなさない場合は、お知らせください。最小限の例を作成しようとします)