1

我在文件中有以下代码tested.cpp

#include <iostream>
using namespace std;

class tested {
    private:
        int x;
    public:
        tested(int x_inp) {
            x = x_inp;
        }

        int getValue() {
            return x;
        }
};

我还有另一个文件(称为testing.cpp):

#include <cppunit/extensions/HelperMacros.h>
#include "tested.cpp"

class TestTested : public CppUnit::TestFixture
{
    CPPUNIT_TEST_SUITE(TestTested);
    CPPUNIT_TEST(check_value);
    CPPUNIT_TEST_SUITE_END();

    public:
        void check_value();
};

CPPUNIT_TEST_SUITE_REGISTRATION(TestTested);

void TestTested::check_value() {
    tested t(3);
    int expected_val = t.getValue();
    CPPUNIT_ASSERT_EQUAL(7, expected_val);
}

当我尝试编译testing.cpp文件时,我得到:undefined reference tomain'`。嗯,这是因为我没有 main(程序的入口点)。因此,编译器不知道如何开始执行代码。

但我不清楚的是如何执行testing.cpp. 我试图添加:

int main() {
        TestTested t();
        return 1;
}

但是,它不打印任何内容(并且预计会返回错误消息,因为 3 不等于 7)。

有谁知道运行单元测试的正确方法是什么?

4

1 回答 1

2

既然您正在编写 cppunit 测试,为什么不查看 cppunit doc 呢?( http://cppunit.sourceforge.net/doc/lastest/cppunit_cookbook.html )

它告诉你主要的写法是这样的:

#include <cppunit/ui/text/TestRunner.h>
#include "ExampleTestCase.h"
#include "ComplexNumberTest.h"

int main( int argc, char **argv) {
  CppUnit::TextUi::TestRunner runner;
  runner.addTest( ExampleTestCase::suite() );
  runner.addTest( ComplexNumberTest::suite() );
  runner.run();
  return 0;
} 
于 2013-04-18T09:11:29.430 回答