The first steps on developing a datacentric testing
framework began in summer 2002 after supporting a
diploma thesis on Testing in a J2EE environment and its
special requirements on basis of JUnit and it's extensions.
Until then I had covered good ground in using
JUnit
in standard application development and in testing my
selfwritten service-based framework to support
development of J2EE components and standard applications
alike - This was done as inhouse project only.
Even in this first attempt to make developer life a little easier my major goal was to combine different very good frameworks under the hood of an easy to use framework with a rather simple API. - Why invent logging facilities when there is such an excellent logging framework as LOG4J of the Apache Jakarta project or why try to invent templating mechanisms if you can use a rock solid Velocity from Apache Jakarta project.
Why not use an existing framework then?
After a research over the web I found two frameworks
that apealed to me by the basic ideas and goals they
aimed - a data centric approach to unit testing.
In my opinion the major drawback in JXUnit was the
complexity of usage.
With this in mind I stumbled over JTestCase on
Sourceforge.
This project used direct data structure description
using
Java
datatypes and a mapping of XML to JUnit class structure
by supporting basic object instanciations. The following
example is taken from the JTestCase project version
2.1.0 on Sourceforge
<?xml version ="1.0" encoding = "UTF-8"?>
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:/Programme/eclipse/workspace/JTESTCASE/config/jtestcase.xsd">
<class name="JTestCaseTest">
<method name="testDateType" test-case="first-testcase">
<params>
<param name="a_JavaUtilDate" type="java.util.Date">01.08.2003</param>
</params>
</method>
<method name="testParamGroups" test-case="second-testcase">
<params>
<param name="key" type="java.lang.String">key</param>
...
</params>
</method>
...
</class>
</tests>
The major points JTestCase was missing then were