ビルド プロセス中に cppunit ベースの単体テストの実行を自動化していますね。
CppUnit を使用してビルド プロセスを実行しようとしている場合は、そうしないでください!
単体テストがクラッシュしたときにビルド プロセスを停止させている原因を教えてください。Makefile、独自のスクリプト、または継続的インテグレーション フレームワークによって開始された単体テストは何ですか?
あなたの質問に答えるために、CppUnit は違反またはセグメンテーション エラーから回復できません。Unix ライクなシステムでは、SIGSEGV をキャッチして続行できるはずですが 、どの状態ですか?
クラッシュが製品ではなく単体テストで発生する場合は、NULL ポインターの逆参照を防ぐためにアサーション ガードに頼ることをお勧めします。
class TestObject : public CPPUNIT_NS::TestCase
{
CPPUNIT_TEST_SUITE(Test);
CPPUNIT_TEST(testObjectIsReady);
CPPUNIT_TEST_SUITE_END();
public:
void setUp(void) {}
void tearDown(void) {}
protected:
void testObjectIsReady(void)
{
Object *theObject = GetObject();
CPPUNIT_ASSERT_MESSAGE("check pointer is not null", theObject != NULL);
//--- now you can play with your object without dereferencing a NULL pointer
CPPUNIT_ASSERT_MESSAGE("check objet is ready", theObject->isReady());
}
};