通過閱讀CppUnit食譜和大量的谷歌搜索之後,我一直無法弄清楚我得到的特定錯誤的原因。使用CPPUNIT_TEST_SUITE宏時出錯
我有一個非常基本的CppUnit testFixture類 - > 我有一個文件 - MyTest.h,只有一個TestFixture類定義。
// MyTest.h
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/extensions/HelperMacros.h>
class MyTest : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(MyTest); // Line num 8
CPPUNIT_TEST(TestFailure);
CPPUNIT_TEST_SUITE_END();
public:
void TestFailure()
{
CPPUNIT_ASSERT(false);
}
};
另外,MyTest.cpp用於驅動這個MyTest類。
// MyTest.cpp
#include "MyTest.h"
然後,一個名爲main.cpp的文件將實例化runner並運行實際的testcase。
// main.cpp
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/extensions/HelperMacros.h>
// In my main, I define a macro ADD_TEST and do #include of file called "testList.h"
// So my testList.h can have any number of ADD_TEST macros.
int main(int argc, char **argv)
{
CppUnit::TextUi::TestRunner runner;
#define ADD_TEST(_testName) \
runner.addTest(_testName::suite());
#include testList.h"
#undef ADD_TEST
runner.run();
return true;
}
這裏是我的testList.h - >
#pragma once
#include MyTest.h
ADD_TEST(MyTest)
現在,這個文件結構的工作 - 這是在Windows安裝程序。 在linux中,我獲得以下奇怪的錯誤 -
MyTest.h: In function 'int main(int, char**)': MyTest.h:8: error: 'main(int, char**)::MyTest' uses local type 'main(int, char**)::MyTest'
MyTest.h:8: error: trying to instantiate 'template<class Fixture> class CppUnit::TestSuiteBuilderContext'
MyTest.h: In static member function 'static void main(int, char**)::MyTest::addTestsToSuite(CppUnit::TestSuiteBuilderContextBase&)':
MyTest.h:8: error: cannot convert 'CppUnit::TestSuiteBuilderContextBase' to 'int' in initialization
這有我徹底糊塗了。我知道這些宏正在被拾取,因爲如果我在MyTest.h中註釋掉第num8行,那麼會出現「suite」未聲明的錯誤。 但是,然後是CPPUNIT_TEST_SUITE等宏可用,那麼爲什麼錯誤? 我正在編譯-lstC++,-ldl & -lcppunit標誌。
任何幫助表示讚賞!
謝謝!