We started some work with CUnit, which worked except that everything ran in one thread and any memory faults caused the unit tests to stop running, which was rather annoying.
There one C unit testing framework that forks and executes each test cases in a separate process so that all the tests are executed even in the presence of tests that core dump :
Check
However, I'm afraid of the performance penalty all these forks bring (and to be honest, I didn't give it a try). But I won't live long with any single test core dumping : I usually fix it immediately.
One trick to prevent the unit tests to core is the assertion guard, for instance: use an assertion to prevent using a NULL pointer (example with minunit).
void test_function_returning_a_pointer(void)
{
struct_t *theStruct = function_returning_a_pointer();
MU_ASSERT(theStruct != NULL);
//--- now you can use the pointer
MU_ASSERT(theStruct->field1 == 0);
return MU_PASSED;
}
By the way, I'm not aware of any C++ unit test framework that won't crash in case of segmentation violation.
I also found it incredibly difficult to write the tests, but that might just be unit testing for you.
Could you elaborate on your difficulties ? Are you trying to put legacy code under tests ?