CppUnitLite的实现分析
1. 类TestRegistry是一个Singleton模式。
l 外界通过instance()方法获得它的一个实例。
l 它实际是所有测试用例的注册表。
l 它包含了一个指向测试用例链表的指针,即Test指针。并且维护该链表。
l 实例方法add负责向链表中加入一个新的测试用例,并将已有的测试链表作为新的测试用例的下一个节点。所以测试用例链表是一个LIFO队列。
l 它负责调用所有测试用例的执行方法
2. 类Test是所有测试用例的基类。
l 构造函数负责将本身加入到TestRegistry注册表中,并作为首节点。
l 它提供了一个纯虚函数run,具体的测试用例override此虚方法。
l 它包含一个执行下一个测试用例的指针,所以Test本身是一个测试用例链表。
3. 宏TEST包含实际的一条测试用例的代码。
l 负责定义一个Test的子类。
l override基类的纯虚函数run,使得子类可以别实例化。
l 负责生成该子类的一个实例。(基类的构造函数保证将该实例添加到TestRegistry注册表中)。
4. 类TestResult负责收集所有测试用例的执行结果
l 虚函数testStarted表示开始执行测试测试用例。
l 虚函数testEnded表示测试用例执行完毕。
l 虚函数addFailure表示执行某一条测试时,出现错误。
5. 辅助宏CHECK,CHECK_EQUAL在预期和结果不符时,调用TestResult的虚函数addFailure。
6. 类Failure、SimpleString属于辅助类,分别代表执行测试时的错误信息(如文件名、行号,预期结果、实际结果等),简单字符串。