The lifecycle of a test executed using TradeFederation is composed of four separate stages, designed around formally defined interfaces.
- Build Provider: Provides a build to test, downloading appropriate files if necessary.
- Target Preparer: Prepares the test environment, possibly including software installation and device configuration.
- Test: Executes test(s) and gathers test results. This may be any JUnit Test, although our IRemoteTest interface is specifically designed to work well in the Trade Federation environment.
- Test Invocation Listener: Listens for test results, usually for the purpose of forwarding the test results to a repository or displaying them to the Test Runner.
The fundamental testing entity in TF is a Configuration (config). A config is an XML file that declares the lifecycle components of a test.
This separation of the test's lifecycle is intended to allow for reuse. Using this design, the Developer can create a Test once, and then the Integrator can create different Configurations to run that Test in different environments. For example, they could create a Configuration that will run a test on a local machine and dump the result to stdout. They could then create a second Configuration that would execute that same test, but use a different Test Invocation Listener to store the test results in a database. A third Configuration might be designed run that test continuously from a test lab somewhere.
It's convenient to note here that a Configuration along with its command-line arguments (as
provided by the Test Runner) is known as a Command. When TF pairs a Command with an
ITestDevice and executes it, the subsequent object is known as an Invocation.
In short, an Invocation encompasses a complete TF test execution, across its entire lifecycle.