2016-05-26 8 views
0

現在、私はBoost asioをベースにしたネットワークライブラリをコーディングしています。 ループバックエコーテストでlibを自動的にテストします。 問題は、サーバーが継続的に実行されているため、テストが終了しないことです。 私の考えは、レスポンスデータでいくつかのEQUALテストを行い、単体テストを成功裏に停止することです。それ以外の場合にタイムアウトが発生すると、テストは失敗して停止するはずです(私は単体テストとして統合テストを行っています)... 手動でテストを成功させるブーストユニットテストマクロはありますか?C++ブーストユニットテスト:単体テストを成功裏に手動で終了する方法は?

ありがとうございます!

+0

手動?あなたはテストプロセスにいくつかのコマンドを与えることによって "外部"からの意味ですか? –

+0

私はBOOST_AUTO_TEST_CASE /機能の中から停止したいと思います。 – Henrix

+0

テストケースの(擬似)コードを投稿できますか? –

答えて

1

テスト機能から離れるだけで、成功と見なすことができます。明示的に結果を設定する場合は、成功の場合はBOOST_CHECK(true)、失敗の場合はBOOST_CHECK(false)を使用できます。これらのマクロには、エラー時に追加メッセージを印刷するバリアントがあります(BOOST_CHECK_MESSAGE)。

テストフレームワーク自体はシングルスレッドであり、個々のテストは順番に実行されます。各テスト関数は、明示的なreturnステートメントまたは実行「終了から終了」のいずれかで終了する必要があります。

自分では返されないが、トリガーが必要な関数を呼び出す場合は、関数を呼び出す前に何らかの方法でこのトリガーをスケジュールする必要があります。これは、スレッドを開始し、ある時間待ってからトリガーを送信して、ブロッキング機能が戻るようにする必要があります。

+0

クイック返信ありがとう! 「離れる」とはどういう意味ですか?テストケースから戻っても、何も起こらず、タイムアウトが発生します。 – Henrix

+0

Hmです。そうではありません。複数のスレッドが関与していますか? タイムアウトはどこで発生しますか?ブーストテストフレームワークまたはテスト対象のコンポーネントでは? –

+0

'timeout'デコレータ(http://www.boost.org/doc/libs/1_61_0/libs/test/doc/html/boost_test/testing_tools/timeout.html)を使用していますか? –

関連する問題