The site is not quite done, so there will be a few oddities. The project is hosted at SourceForge, and you can get to the project site at the Source Forge Project Details

Why Another Test Framework?

Like the authors of the TestNG framework, I found myself being frustrated at the available tools for creating test harnesses. Specifically, I wanted to substantially reduce the amount of test code written over time, and to close the gap between Development and Quality Assurance (QA). I wanted to achieve test case reuse the majority of the time. Typically, the tests written by developers are not used by QA and vice versa. While it is not likely that 100% overlap will happen, in the very least a majority of the test harness can be reused if some important characteristics are present in the test framework. A reusable and composite test harnesses needs to overcome the following hurdles:

  • There has to be 100% deterministic test execution order.
  • To support arbitrary composition, test code needs to be able to share state; stated differently the test framework needs to support inversion of control or dependency injection.
  • The same bundle of test logic (i.e. a suite) should be able to run against different contexts. For example, the same test code should be able to run against multiple J2EE containers or DBMS platforms.
  • Lastly, checking the correctness of result needs to account for complex outputs and state dependencies. This requirement requires that test execution to be separated from test correctness checking. In more practical language, assert statements are not a sufficient means of testing.

What is a Baseline?

The project's name is meant to communicate how a test should be validated--from its baseline or expected output. Most tests can be characterized by the following general design:

  • Initialize the environment to a known state
  • Make some intentional deltas to the state
  • Compare the state to the expected answer

Given this general approach, the goal of this test framework is make it easy to construct test suites that are easy to assemble with "off-the-shelf" parts to build up a know state, make changes to it, and then process complex output. This technique can be used to validate text, structured documents like HTML or XML, images, audio, or video because a difference computation is valid for all these output types.

You can also see the following documents:

BaselineTest Framework Fundamentals

The BaselineTest project has three major parts currently.

  • The Test Library is used to create and execute test harnesses.
  • The Maven BaselineTest Plugin is used to run tests as part of the Maven build. (Useful for continuous integration)
  • The BaselineTest Eclipse Plugin to run and debug tests within the Eclipse environment.

The BaselineTest Core Concepts

The BaselineTest Framework consists of some core concepts. Context, Suite, TestCase, and TestCaseStep are the building blocks used to construct a test harness. Links to examples are given below:

Interacting With The Framework At Runtime

This is where the BaselineTest Framework is significantly different than other testing tools.

in progress

Baselinetest Eclipse Plugin

The update site for the Baselinetest Eclipse Plugin is hosted at:

BaselineTest Maven Plugin

Goals Overview

The Baseline Test plugin has one goal:


Instructions on how to use the Baseline Test Maven 2 Plugin can be found here.


To provide you with better understanding of some usages of the plugin, you can take a look into the following examples: