Unittest++ 컴파일 중 오류가 발생했습니다.

Unittest++ 컴파일 중 오류가 발생했습니다.

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/- 하지만 최근에는 프로젝트 관리자가 별로 활동적이지 않은 것 같습니다.

관련 정보