Erro ao compilar unittest++

Erro ao compilar unittest++

Estou instalando o unittest++ no MacOS maverick e me deparo com este erro de compilação:

src/tests/TestXmlTestReporter.cpp
src/tests/TestCurrentTest.cpp
Linking TestUnitTest++...
Running unit tests...
:107: error: Failure in test: Expected 2 but was 0
FAILURE: 1 out of 174 tests failed (1 failures).

Como consertar esse problema? Não tenho problemas com versões mais antigas do MacOS.

Responder1

Eu me deparei com 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 errada para Test::RunImpl(). RunImpl não espera argumentos, 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 como a assinatura não corresponde, deveria 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 é consertar todos os RunImpl de forma semelhante.

Não sei por que/como ele foi compilado e executado com sucesso em plataformas OSX anteriores.

ATUALIZAÇÃO: Depois de resolver isso, descobri que na verdade existe um ticket aberto para isso:http://sourceforge.net/p/unittest-cpp/bugs/23/- mas os mantenedores do projeto não parecem muito ativos ultimamente.

informação relacionada