Я столкнулся с этим. Похоже, что в тестовом коде UnitTest++ произошла ошибка. Он реализует несколько фиктивных тестов в src/tests/TestTestRunner.cpp, но все они имеют неправильную подпись для Test::RunImpl(). RunImpl не ожидает никаких аргументов, но RunImpl пробного теста предоставляет ссылку на объект TestResults.
например, на l25 TestTestRunner.cpp:
virtual void RunImpl(TestResults& testResults_) const
{
for (int i=0; i < count; ++i)
{
if (asserted)
ReportAssert("desc", "file", 0);
else if (!success)
testResults_.OnTestFailure(m_details, "message");
}
}
но поскольку подпись не совпадает, она должна быть:
virtual void RunImpl() const
{
TestResults* testResults_ = CurrentTest::Results();
for (int i=0; i < count; ++i)
{
if (asserted)
ReportAssert("desc", "file", 0);
else if (!success)
testResults_->OnTestFailure(m_details, "message");
}
}
Поэтому решение состоит в том, чтобы исправить все RunImpl аналогичным образом.
Я не уверен, почему / как он компилировался и успешно работал на более ранних платформах OSX.
ОБНОВЛЕНИЕ: После решения этой проблемы, я обнаружил, что на самом деле есть открытый билет для этого: http://sourceforge.net/p/unittest-cpp/bugs/23/ - но в последнее время разработчики проекта, похоже, не очень активны.