编译 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/- 但项目维护人员最近似乎不太活跃。

相关内容