### Test Framework Components

The main components of the Test Framework are:

- Test classes
- Runtest macros

#### Test Classes

A target class is a class in your program that you want to test for correct performance. You write a test class, derived from a Test Framework class, that runs the target class and does the evaluation.

ITest is the abstract base class from which all test classes are derived, including the test class that you write and declare to be a friend of your target class. You can derive directly from ITest to perform simple tests. In addition, three kinds of functionality are provided by specialized subclasses derived from ITest:

- To group tests, so that you can perform more than one test at a time, use the multiple tests: ITestCollection and ITestMultiplexer.
- To perform timing measurements, use the timing tests: ITimingTest and IStartStopTimingTest.
- To test an entire tree of classes adhering to the same protocol, use the Protocol tests: IComparisonTestOf and IStreamTestOf.

The test classes work by creating and evaluating an instance of your target class. You do not have to make changes to your target class code to test its behavior.

#### Runtest macros

The Test Framework defines several macros that you may use to create applications to run your tests:

- To automatically generate a main function to run a single test, use runTestImplementationMacro.
- To create your own application to run several tests, use beginTestFrameworkMacro, runTestMacro, endTestFrameworkMacro, and runTestResultMacro.
- For protocol tests, use comparisonTestMacro and IStreamTestMacro.