Eu corri para isso. Parece que há um erro no código de teste UnitTest ++. Ele implementa vários testes simulados em src / tests / TestTestRunner.cpp, mas todos eles têm a assinatura incorreta para Test :: RunImpl (). O RunImpl não espera nenhum argumento, mas o RunImpl do teste simulado fornece uma referência a um objeto TestResults.
por exemplo. em l25 de 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");
}
}
mas porque a assinatura não corresponde, deve ser:
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");
}
}
Portanto, a solução é corrigir todo o RunImpl de maneira semelhante.
Não sei por que / como ele foi compilado e executado com êxito em plataformas anteriores do OSX.
ATUALIZAÇÃO: Depois de resolver isso, descobri que há, na verdade, um ticket aberto para isso: link - mas os mantenedores do projeto não parecem muito ativos ultimamente.