
Ich installiere unittest++ auf MacOS Maverick und stoße auf diesen Kompilierungsfehler:
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).
Wie behebt man dieses Problem? Mit einer älteren Version von MacOS habe ich kein Problem.
Antwort1
Ich bin darauf gestoßen. Es sieht so aus, als ob im UnitTest++-Testcode ein Fehler vorliegt. Er implementiert eine Reihe von Mock-Tests in src/tests/TestTestRunner.cpp, aber sie alle haben die falsche Signatur für Test::RunImpl(). RunImpl erwartet keine Argumente, aber das RunImpl des Mock-Tests stellt einen Verweis auf ein TestResults-Objekt bereit.
zB auf l25 von 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");
}
}
aber weil die Signatur nicht übereinstimmt, müsste es heißen:
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");
}
}
Die Lösung besteht also darin, alle RunImpl auf ähnliche Weise zu reparieren.
Ich bin nicht sicher, warum/wie es auf früheren OSX-Plattformen erfolgreich kompiliert und ausgeführt wurde.
UPDATE: Nachdem ich dieses Problem gelöst hatte, stellte ich fest, dass es hierfür tatsächlich ein offenes Ticket gibt:http://sourceforge.net/p/unittest-cpp/bugs/23/– aber die Projektbetreuer scheinen in letzter Zeit nicht sehr aktiv zu sein.