在哪里放主要和写什么?

时间:2013-04-18 08:26:07

标签: c++ main

我在文件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 to main'`。嗯,这是因为我没有main(程序的入口点)。因此,编译器不知道如何开始执行代码。

但我不清楚的是如何在testing.cpp中执行代码。我试着添加:

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

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

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

1 个答案:

答案 0 :(得分: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;
}