2016-10-01 13 views
0

私は、Phil SquaredのCatch Testingフレームワークとassertを使用しているサードパーティのコードを組み合わせてunittestを使用しています。C++のCatchフレームワークCのアサートを扱う?

開発中、いくつかのバグアサーションが発生し、プログラムが中止されることが頻繁に発生します。このような場合、Catchはログやその他の診断情報を報告しません。

このプログラム中絶を「リダイレクト」して、それを処理させる方法はありますか?

答えて

1

アサートをキャッチすることはできませんが、再定義することはできます。オリジナルのアサートはプログラムを終了するだけで例外をスローしないので、キャッチすることはできません。しかしassertはマクロであり、独自のマクロを定義解除して自分自身を定義することができます。 C++プログラムでは、例外をスローするような方法でアサートを再定義するのが一般的なトリックです。そしてテストでそれを捕まえることができます。

関連する問題