1

Я устанавливаю unittest++ на MacOS Maverick и сталкиваюсь с этой ошибкой компиляции:

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).

Как решить эту проблему? У меня нет проблем со старой версией MacOS.

1 ответ1

0

Я столкнулся с этим. Похоже, что в тестовом коде 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/ - но в последнее время разработчики проекта, похоже, не очень активны.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .