我们上面的AddTestInfo就是其中的一个实现,负责注册TestInfo实例:
// 添加TestInfo对象到整个单元测试中 // // 参数: // // set_up_tc: 事件函数SetUpTestCases的函数地址 // tear_down_tc: 事件函数TearDownTestCases的函数地址 // test_info: TestInfo对象 void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc, TestInfo * test_info) { // 处理死亡测试的代码,先不关注它 if (original_working_dir_.IsEmpty()) { original_working_dir_.Set(FilePath::GetCurrentDir()); if (original_working_dir_.IsEmpty()) { printf("%s\n", "Failed to get the current working directory."); abort(); } } // 获取或创建了一个TestCase对象,并将testinfo添加到TestCase对象中。 GetTestCase(test_info->test_case_name(), test_info->test_case_comment(), set_up_tc, tear_down_tc)->AddTestInfo(test_info); } |
我们看到,TestCase对象出来了,并通过AddTestInfo添加了一个TestInfo对象。这时,似乎豁然开朗了:
1. TEST宏中的两个参数,第一个参数testcase_name,就是TestCase对象的名称,第二个参数test_name就是Test对象的名称。而TestInfo包含了一个测试案例的一系列信息。
2. 一个TestCase对象对应一个或多个TestInfo对象。