問題タブ [boost-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.
c++ - BOOST TEST でテスト ケースの代わりにテスト スイートを追加する
メディア ファイルをテストするための静的テスト セットアップとして作成された BOOST TEST コードをいくつか使用しました。ただし、テストするメディア ファイルの数は時間の経過とともに変化する可能性があるため、テスト セットアップを動的にする必要があります。つまり、ある日には 3 つのファイルがあり、翌日には 15 のファイルがテストされる可能性があります。
現在のセットアップでは、いくつかの BOOST_AUTO_TEST_SUITE を使用して静的ツリー構造を構築しています。私の問題は、テスト ツリーで、2 つの test_suite の TestSuiteD1 と TestSuiteD2 をテスト ツリーに追加して、テスト ツリーを実行する必要があることです。動的テストでは、その場所に 2 つの test_case しか追加できないため、このツリー要素の下にさらに test_case (TestCase1 - TestCase3) を追加することはできません。以下の ::make_test_case の ::make_test_suite バージョンをインターネットで検索しましたが、うまくいきませんでした:
static boost::unit_test::ut_detail::auto_test_unit_registrar TestSuiteD1_registrar0 (boost::unit_test::make_test_case(&fTestSuiteD1_invoker , "TestSuiteD1" ), boost::unit_test::ut_detail::auto_tc_exp_fail::instance()->value() );
私がやりたいことを示し、test_case の代わりに test_suite を追加できるかどうかのフィードバックを得るために、いくつかのサンプル コードを以下に追加しました。
c++ - 新しいオペレーターのテストの失敗
コンストラクターに新しい演算子があるクラスを作成しました。新しいオペレーターの失敗を管理するためにコンストラクターにガードを作成しましたが、今度はそれをテストしたいと思います。
例として、次のようなコンストラクターがあります。
私の catch コードをテストするために、新しいオペレーターに失敗するように伝えることができるテストを作成することは可能ですか?
c++ - boost :: unit_testで自動テストを実行するスクリプトを作成するにはどうすればよいですか?
私はC++の自動単体テストの初心者です。boost :: unit_testの指示に従い、boost::unit_testで関数unit_test_main
を呼び出してテストスキームを終了しました。テストプログラムを実行しても問題ありません。ただし、引数をテスト関数に渡すことに問題があります。たぶん、次のコードは私の問題をはるかによく説明することができます:
ご覧のとおり、このテストフレームワークでは、テストしたい主な関数はTestsubであり、これは入力引数const std :: string&nameに依存しています。ただし、テストスイート関数get_feelfree_test_suiteを介して引数を渡すことはできません。したがって、このテストプログラムでは、別のテスト関数Testabcを作成しました。この関数では、可能なすべてのファイルテストリストが与えられ、Testsubに渡されます。これは間違いなく最善の解決策ではありません。他に解決策があるかどうか疑問に思います。いくつかの解決策が頭に浮かびますが、それらが良い解決策であるかどうかはわかりません。
- 解決策1:
メイン関数()からget_feelfree_test_suite
int main( int argc, char* argv[]
に引数を渡す方法を見つけてください。その後、プログラムを数回実行するスクリプトを作成します。Windowsでは、可能なスクリプトの1つは.batスクリプトです。このソリューションの場合、実装方法がわかりません。 - 解決策2:可能なすべての入力ファイルのテスト名が指定されているリストファイルを作成してから、プログラムでリストファイルを読み取ります。これは実装がはるかに簡単です。
また、Pythonはテストフレームワークに非常に簡単に組み込むことができると聞きましたが、それについてはわかりません。とにかく、私はすべての可能な解決策を受け入れています、そして感謝します!
c++ - boost::phoenix を使用して BOOST_CHECK マクロを適応させる
c++ 11 を使用する場合のテスト中に、次の構成を使用しました。
私は現在、C++11 が使用されていないプロジェクトに取り組んでおり、別の関数/ファンクターを作成することなく、同様のラムダ式を生成する方法を探しています。
ラムダを作成するための の基本的な使用法は理解していますが、マクロboost::phoenix
を呼び出すことができるフェニックス ラムダを作成する方法が思いつきません。boost::test
私が思いつくことができる最高のものは次のとおりです。
残念ながら、マクロ BOOST_CHECK_EQUAL はstd::for_each
呼び出しの行番号ではなく、マクロの行番号を報告するため、このアプローチでは失敗したチェックの行番号情報が失われます。
「boost::phoenix」を使用したマクロ呼び出しを含むラムダを作成するより良い方法はありますか?
c++ - VisualStudio2012で例外をスローする単体テストをブーストする
最近、ラップトップをWindows 8にアップグレードして、W8およびWP8用に開発できるようにしました。単体テストにBoost.Testを使用するVisualStudio2010で作成されたプロジェクトがいくつかありました。プロジェクトをVS2012プロジェクトに変換しようとしましたが、問題が発生したため、以前と同じソースコードを使用して新しいVS2012プロジェクトを作成しました。ただし、すべてのユニットテストスイートを実行すると、例外がスローされます。make_report
デバッグしたところ、のメソッドでレポートを作成しようとすると例外がスローされることがわかりましたresults_reporter.ipp
。問題のある行は
コードのどこかに、map
メモリが不良であるために例外があるオブジェクトがあります。Boost1.50.0を使用しています。最新のリリースである1.52.0も試しましたが、同じ結果になりました。VS2012はバグがありますか、それとも私が気付いていない設定/構成がありますか、またはWindows 7と8での開発に違いがありますか?
編集
VS2012とBoost1.50.0を使用した環境で例外をスローするテストの例を次に示します。
c++ - ブーストテスト-'未定義の参照'エラー
私は2つの簡単なファイルを持っています:
runner.cpp:
およびtest1.cpp:
コンパイルするために、私は使用しています:
次のエラーが発生します。
MinGWでg++4.7.2を使用しており、ブーストは1.52.0です。
test1.cpp
「複数のメイン定義」のものを除いて、コンパイルしようとすると同じエラーが発生します。
私はかなり長い間公式ドキュメントを熟読しましたが、リンクオプションに関する詳細についてはほとんどありません。ブーストライブラリをコンパイルしたとき、さらに、 ;unit_test_framework
も取得prg_exec_monitor
しました。test_exec_monitor
たぶん私はこれらをどうにかしてリンクする必要がありますか?多くの組み合わせを試しましたが、いずれも何らかの未定義の参照リンカーエラーが発生しました。
ブーストで生成されたライブラリの完全なリスト-私はそれらすべてをプロジェクトルートに持っています:
c++ - ブーストテストのコマンドライン引数
ブーストテスト用に追加のコマンドライン引数を処理したいと思います。機能を自動的にテストするために使用しています。サーバー名、ユーザー、パスなどを指定する必要があります...
ユニットテスト全体にすでにコード化されているもの以外に、テスト実行可能ファイルの追加コマンド引数を渡すと、ヒープ破損エラーが発生します。
私は左右を検索しましたが、それらの議論にアクセスできる場所を見つけるだけでは十分に困難でした。これで、おそらく最初にそれらも設定する必要があるように見えます。そうしないと、コマンドラインパーサーが愚かなことをすることになります。
ユニットテストを強化するためにコマンドライン引数を追加する方法を知っている人はいますか?
編集-最小限の例
これを次のように呼び出します。exename hello
これは何の関係もないように見えます。この質問は削除する必要があります。私は何が起こったと思うかについて話すことはできませんが、これに関連している可能性があると思います:
**ここを見ている読者は、ここでの質問と回答が役に立たないことを知っていることが非常に重要です。私が抱えていた問題は、私が話すことができない私の環境に非常に特有のものでした。私は本当に改造と人々がこの警告を削除するのをやめるか、私にこれを削除させてくれることを望みます、しかしそれはそれが何であるかです。この野生のガチョウによって暗い路地を誤解しないでください。**
c++ - Visual Studio 2010 から BOOST 単体テストを実行する
QuantLibプロジェクトを使い始めたばかりです。かなりの数の BOOST 単体テストが定義されているため、質問: Visual Studio からこれらのテストを選択的に実行する (そして結果を表示する) 簡単な方法はありますか?
これまでのところ、単体テストは .Net 言語でしか使用していません。MsTest を使用する場合は組み込みのテスト ランナーを使用するか、他のフレームワークにはアドオン (私は Resharper と TestDriven.NET を使用しました) を使用できます。そこで、実行するテストを選択し、デバッガーを接続して実行できます (残念ながら、これは時々便利です)。アンマネージ C++ での BOOST テスト用の同様のアドオンはありますか?
unit-testing - ブースト テスト: パラメーター化されたテスト ケースの書き方
ブーストテストケースがあります。このテスト ケースのほとんどの行は、パラメーターに関係なく実行されます。ただし、指定されたパラメーターに基づいて実行される部分があります。いくつかのマイナーな部分を除いてほとんど同じである 2 つの別個のテスト ケースを作成することは避けたいと思います。したがって、次のようなアプローチを使用して、パラメーター化されたテスト ケースを作成する必要があります。
より便利な方法で私の目標を達成する他の方法はありますか? BOOST_PARAM_CLASS_TEST_CASEマクロを見つけることができましたが、この場合に関連するかどうかはわかりません。