ブーストユニットテストフレームワークを使って書かれた単体テストの実行を自動化するためのスクリプトを書いています。私は、すべてのテストのサブセットの選択とその後の実行を可能にする機能を追加したいと思います。私はrun_test引数を使用してテストのサブセットを実行できますが、コンパイルされたバイナリにあるすべてのテスト、つまりrun_testに渡すことができるすべての引数値をリストする方法を見つけることができません。使用可能なすべてのテストを抽出する方法はありますか、またはカスタムテストランナーを作成する必要がありますか?もしそうなら、どこから始めるのですか?ブーストユニットテスト - 利用可能なテストのリスト
答えて
boost :: testの内部用のドキュメントは、少し欠けている可能性があり、すべてが利用可能であると述べています。
boost :: testヘッダーファイル、特にtest_suiteとtest_unitクラスを見てください。 traverse_test_treeという関数があり、登録されたテストを実行するために使用できます。
以下うまくいけば、それは開始あなたの頭を与えるだろう、それが出力する各テストの結果をtraverse_test_treeを使用して、私は特定の形式で出力テスト結果に書かれているいくつかのsamleコードです....
/**
* Boost test output formatter to output test results in a format that
* mimics cpp unit.
*/
class CppUnitOpFormatter : public boost::unit_test::output::plain_report_formatter
{
public:
/**
* Overidden to provide output that is compatible with cpp unit.
*
* \param tu the top level test unit.
* \param ostr the output stream
*/
virtual void do_confirmation_report(boost::unit_test::test_unit const& tu,
std::ostream& ostr);
};
class CppUnitSuiteVisitor : public test_tree_visitor
{
public:
explicit CppUnitSuiteVisitor(const string& name) : name_(name)
{}
virtual void visit(const test_case& tu)
{
const test_results& tr = results_collector.results(tu.p_id);
cout << name_ << "::" << tu.p_name << " : " << (tr.passed() ? "OK\n" : "FAIL\n");
}
private:
string name_;
};
// ---------------------------------------------------------------------------|
void CppUnitOpFormatter::do_confirmation_report(
test_unit const& tu, std::ostream& ostr)
{
using boost::unit_test::output::plain_report_formatter;
CppUnitSuiteVisitor visitor(tu.p_name);
traverse_test_tree(tu, visitor);
const test_results& tr = results_collector.results(tu.p_id);
if(tr.passed())
{
ostr << "Test Passed\n";
}
else
{
plain_report_formatter::do_confirmation_report(tu, ostr);
}
}
Boost.Testのトランク版には、必要なものを得るためのコマンドライン引数があります。
ああ、素晴らしい!ありがとう、偉大な図書館のおかげで! – Roel
@Gennadiy Rozentalこの新しいパラメータlist_contentをReleaseに設定すると、 – KindDragon
リリースに関する最新情報はありますか? – CinCout
- 1. 利用可能なホットキーのクロスブラウザのリスト
- 2. テンソルの利用可能なグラフのリスト
- 3. ジェンキンススクリプトコンソール:利用可能なジェンキンメソッドのリスト?
- 4. PHPで利用可能なコレータのリスト?
- 5. homebrew利用可能なコンパイラのリスト
- 6. 利用可能な** kwargsのリスト
- 7. php5 +で利用可能なコアクラスのリスト?
- 8. 利用可能なフィルタリング利用可能なタスクグループ別のギャラリストタスク
- 9. 利用可能な広告がない場合のテスト方法
- 10. Javaの統合テストの再利用可能なベースセットアップ
- 11. いくつかの製品の再利用可能なXCテスト
- 12. x_npの利用可能なテストpthread関数 - C/C++
- 13. Golangテストの再利用可能なコンポーネントとフィクスチャ
- 14. 利用可能なロールの春のセキュリティのリスト
- 15. Java - 利用可能なガベージコレクションアルゴリズム
- 16. 再利用可能なコントロール
- 17. 再利用可能なプリプロセッサ__COUNTER__
- 18. 再利用可能なコンポーネント
- 19. 利用可能なCRANビネット
- 20. 再利用可能なリモートモーダルレール
- 21. 次利用可能なID
- 22. 再利用可能な、
- 23. 利用可能なデータ
- 24. 再利用可能なコンポーネント
- 25. 再利用可能なビュー?
- 26. Python:利用可能なストレージデバイスのOS非依存のリスト
- 27. 利用可能なホットスポットのネットワークとアンドロイドのリストに表示
- 28. http://axschema.orgとhttp://schemas.openid.netの利用可能な属性のリスト
- 29. Googleホームで利用可能なすべてのアクションのリスト
- 30. Django testrunnerで再利用可能なDjangoアプリケーションをテストする
開始可能なコマンドライン['list_content'](http://www.boost.org/doc/libs/1_66_0/libs/test/doc/html/boost_test/utf_reference/rt_param_reference/list_content.html)を参照してください。ブースト1.59 + – Raffi