https://github.com/Alinshans/MyTinySTL在这个链接的测试.h中,我有两个疑问。
- 我似乎找不到TestCase::Run的定义
- 无法理解以下代码的含义
#define TESTCASE_NAME(testcase_name)
testcase_name##_TEST
#define MYTINYSTL_TEST_(testcase_name)
class TESTCASE_NAME(testcase_name) : public TestCase {
public:
TESTCASE_NAME(testcase_name)(const char* case_name)
: TestCase(case_name) {};
virtual void Run();
private:
static TestCase* const testcase_;
};
TestCase* const TESTCASE_NAME(testcase_name)
::testcase_ = UnitTest::GetInstance()->RegisterTestCase(
new TESTCASE_NAME(testcase_name)(#testcase_name));
void TESTCASE_NAME(testcase_name)::Run()
您看不到TestCase::Run
的定义,因为您应该自己提供一个。
请注意,宏定义如何以void TESTCASE_NAME(testcase_name)::Run()
结束。这不是一个有效的C++语句。您需要跟进函数体,它将是Run
方法定义的主体:
MYTINYSTL_TEST_(some_unique_name_you_came_with)
{
// Some code for testing
//
}
MYTINYSTL_TEST_宏将生成TestCase
的一个唯一子类,将其注册到某个测试框架中(在静态成员创建期间(,该框架稍后将运行您提供的主体。