我在文件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)。
有人知道运行单元测试的正确方法是什么?
答案 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;
}