
MacOS maverick에 unittest++를 설치하는 중인데 다음 컴파일 오류가 발생했습니다.
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 개체에 대한 참조를 제공합니다.
예를 들어 TestTestRunner.cpp의 l25에서:
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/- 하지만 최근에는 프로젝트 관리자가 별로 활동적이지 않은 것 같습니다.