問題タブ [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.
automake - 同じオブジェクト ファイルを使用して 2 つのプログラムをビルドするように autotools を構成する
ビルドに autotools を使用し、単体テストにCatch2を使用する C++ プロジェクトがあります。Catch2 の詳細はおそらく関係ありません。これは、ビルドして実行する必要がある別のプログラムにすぎません。
私はMakefile.am
このように設定しました(簡略化):
これは、すべてを 2 回コンパイルし、 とlpsdr-applicationcontroller.o
を作成することを除いて、ほとんどの場合機能します。catch2-applicationcontroller.o
common_sources
もちろん、これによりビルド時間は 2 倍になります。catch2
と の両方を同じオブジェクト ファイルにリンクすることをお勧めしlpsdr
ます。その方がビルドが高速であり、実行中のコンパイル済みコードとまったく同じコードをテストしていることを確認できます。
この動作を回避する方法はありますか?
c++ - catch2 を使用した構造体とテストの問題
したがって、point2D.h ヘッダー ファイルに次の関数があります。
次に、point2D.cpp ファイルで、この関数を次のように使用します。
また、cpp ファイルの末尾には次のものが含まれています。
ここで、VectorXY は、別のヘッダー ファイルで定義されている構造体です。したがって、このヘッダー ファイルを point2D.h ファイルと point2D.cpp ファイルの両方に含めました。
ここで、point_vector は別のポイント クラスから取得されます。
この関数をテストするために、catch2 と BDD スタイルで次のテストを作成しました。
しかし、これをコンパイルすると、次のエラーが発生します。
エラー: 'struct ASSplinePath::VectorXY' には 'create_x_y_vectors' という名前のメンバーがありません xy_vec.create_x_y_vectors(points);
エラー: 'Catch::Detail::Approx::Approx(double, double, double)' の呼び出しに一致する関数がありません REQUIRE(xy_vec.x ==approx(1.0, -3.0, 5.0));
追加する必要があります。このテストをコメントアウトすると、すべてがうまくコンパイルされます。したがって、ここで何かが間違っていると思います。したがって、このエラーが何を意味するのかよくわかりません。よろしくお願いします。ありがとうございました。
c++ - MPI: 終了したプロセスがあるかどうかを確認する
Catch2
MPI を使用するコードの単体テストを作成しています。失敗したテストCatch2
は、基本的に、役立つエラー メッセージを伴う失敗したアサーションです。現在、場合によってmpirun
は、テストが 1 つのプロセスだけで失敗したことを検出できないようです。その後、デッドロックが発生する可能性があります。
すべてのプロセスがまだ生きているかどうか、コードの特定のポイントでチェックする多かれ少なかれエレガントな方法はありますか? そうでない場合、すべてのプロセスは終了します。