3

エラーが発生します:unknown location(0): fatal error in "suite_1_test_1": child has exited; pid: 5817; uid: 0; exit value: 255

内部で(after ) を使用しsuite_1_test_1てプログラムを実行すると、 ではないエラー コードで終了する可能性があります。このエラー コードは、プログラムに何が起こったかを示します。Aexecvp()fork()0A

問題は、これを取得すると、値をfatal error処理できず、すぐに出てしまうことです。exit()BOOST TEST

どうにかして一時的にオフにすることはできますか?

ありがとう

4

3 に答える 3

1

ブーストはシグナルハンドラーまたはその他のものを登録しているようで、フォークされた(およびオーバーライドされた)プロセスからのエラーを引き続きキャッチします。その子プロセスからテスト フレームワークを「フック解除」するのに苦労するでしょう。

ただし、単体テスト フレームワークが子プロセスの生成と一緒に使用されることはめったにないため、Boost.Test 内で fork と exec* を使用することはありません。テストしているユニットからこれらの呼び出しを除外します。結局のところ、プロセスは単一の単位ではなく、全体のコンポーネントです。これらのサブプロセスの多くはないと思うので、これらのプロセスと別のフレームワークまたは単純なスクリプトとのコラボレーションをテストすることはそれほど害にはならないはずです。

于 2013-04-18T13:14:57.557 に答える
0

私が理解しているように、 execvp()はテストプログラムを置き換えます。したがって、Boost.Test はもう実行されていません。失敗した場合のみ戻ります。このコンテキストでは、Boost.Test では使用しません。

于 2013-04-18T13:03:57.023 に答える