Concordion is a powerful tool to write and manage automated acceptance tests in Java based projects. It directly integrates with JUnit framework, making it ready to be used with all popular Java based IDEs like Netbeans, Eclipse, IntelliJ IDEA.
Active software specification is a way to specify the behavior of a feature. It also provides a way to implement and verify the software specification by having a connection with the system under development.
An active specification in Concordion is of two parts −
A cleanly written requirement document which describes the desired functionality written using XHTML. XHTML based specifications contain descriptions of the functionality provided with acceptance test examples. Example's data is marked using simple HTML tags.
Acceptance tests are written in Java language called fixture code. Using a Concordion extension of a standard JUnit test case, tests are implemented. It is the responsibility of the Fixture Code to find the example's data marked by tag and use them to verify the software under development.
When Concordion active specification tests are run, the output XHTML files show the original specification and test results. Successful tests are highlighted using "green" color and failed tests are highlighted using "red". Any change in the system will result in failing the test, which ensures that the specifications are always up-to-date. Concordion terms these specifications as active specifications.
Following are the key features of Concordion −
Specifications as documentation − Concordion specifications, being highly readable, can be used as active system documentation. As Concordion based specifications are written in HTML, these documents can be hyperlinked.
Specifications are live − Concordion specifications contain working examples of behavior which are executed against the system. Specifications are color-coded so that any one can see whether the examples are working or not. Executing Concordion specifications regularly makes the documentation up-to-date.
Separate "what?" from "how?" − Concordion specifications help separate the implementation and the required behavior of the system. It provides flexibility to change an implementation later on.
Simple to learn − Concordion library is very concise. It has very few commands to learn and examples are automated using JUnit tests so that tests can be run easily and can be integrated with existing projects easily.
Powerful Customization − Concordion provides extensions API which allows to add functionality. For example, Excel spreadsheets can be used as specifications, screenshots can be added to the output, logging information can be displayed, and much more.