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