問題タブ [catch2]
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.
c++ - 複数の Catch2 テスト ケースで同じ条件をチェックする方法
いくつかのテストケースでいくつかの条件(初期状態など)を確認する必要があります。関数内で使用できないためCHECK
、可能であれば現在のマクロを置き換えたいと考えています。
c++ - すべてのセクションが失敗した場合、Catch2 はもう一度テストを実行します
Catch2 の最新 (2.4.0) バージョンで実行する次のコードがあります。
これを実行すると、すべてが期待どおりに機能し、次のようになります。
明らかに、テスト ケースは 2 回 (セクションごとに 1 回) 実行されます。
セクションの 1 つで assert を変更すると、たとえばREQUIRE(x == 0)
、もう一度、すべてが期待どおりに機能し、Catch2 は各セクションを 1 回実行し、最初のセクションが失敗したことを通知します。ただし、両方のセクションでassert を に変更するとREQUIRE(x == 0)
、結果がわかりにくくなります (少し短くしました)。
テストは明らかに3 回実行され、最後の回は両方のセクションをバイパスします。この動作は予期されたものですか? Catch2 ドキュメントを見てみましたが、関連するものが見つかりませんでした。
c++ - c++/catch2: 別のテスト ディレクトリからの参照コード
単体テストを行う前に、次のようなディレクトリがありました
次にmake
、生成された実行可能ファイルを実行します。この実行可能ファイルは、ルート ディレクトリに生成されました (これを と呼びますrunme
)。
今、私は Catch2 https://github.com/catchorg/Catch2/blob/master/docs/Readme.md#topを使用しようとしています。これは、メインのテストファイルを 1 つ持つことも示しています (定義があります)。 )。だから私は自分のコードを次のように再編成しました
実際のコードを参照しないダミーのテストをいくつか作成しました。これで、すべてのテストが実行されますmake tester
。./tester
そして、元のアプリケーションを実行するmake
ことができます。./runme
私の質問は、テスト コードからソース コードを実際に呼び出すにはどうすればよいかということです。src
このディレクトリをライブラリに変換する必要がありますか? つまり、テスト コードが c++ で src コードを参照する方法は、私には少しわかりません。
完全な開示のために、私はpython / pytestの世界から来て、ユニットテストまたは適切なプロジェクト構造に関して実際にc ++コードをどのように構造化するのか疑問に思っています。
c++ - CMake - 「アーキテクチャ x86_64 の未定義のシンボル」で、glad/GLFW/Catch2 を使用
したがって、次のようなツリーである CMakeLists を含むプロジェクトがあります。
そして、Catch2 libを使用して単体テスト用のルートmakeプロジェクトをテストしようとしています。しかし、 unit_test プロジェクトをビルドしようとすると、次のエラーが発生します。
プロジェクト CMakeLists:
単体テスト CMakeLists:
私が間違っていることは何ですか?私はGLFWを含めて、このようにうれしいです:
そして、単体テストなしでプロジェクトのみをビルドすると、すべてが機能してビルドされます。コンパイラ Clang 10.0
c++ - Catch2 を外部ライブラリとして CMake と統合するには?
Catch2 を使用して学習プロジェクトをセットアップしようとしていますが、更新を取得して他の C++ プロジェクトに使用できるように、リポジトリを Cpp フォルダーに複製するのが最善であると判断しました。取り付け方法はこちらのとおりです。
基本的なフォルダ構造は次のとおりです。
Catch2 のドキュメントに従って、これを CMake ファイルに置きます。
ただし、VS Code でプロジェクトを構成しようとすると、次のエラー メッセージが表示されます。
main.cpp
は単なる Hello World ファイルであり、完全な CMakeLists.txt ファイルの内容は次のとおりです。
なぜこれが起こるのかわかりません。私は仕事で使用しなければならなかった非常に基本的なコマンドを除いて、CMake の完全な初心者です。意図したようにヘッダーファイルとしてドロップする方が簡単だと思いますが、このアプローチは私にとってより理にかなっています...
注: 私はこの SO の質問を読みました。しかし、彼の質問は、プロジェクト内のヘッダー ファイルとしての Catch2 に関するものでした。
注 2: 望ましい動作は、Catch2 を外部ライブラリとして使用してプロジェクトをビルドすることです。
(追加情報: CMake --version は 3.13.3、VS Code で CMakeTools を使用、OS は Windows 10)