| A
TestCase that can define both simple and bulk test methods.
A simple test method is the type of test traditionally
supplied by by
TestCase . To define a simple test, create a public
no-argument method whose name starts with "test". You can specify the
the name of simple test in the constructor of BulkTest ;
a subsequent call to
TestCase.run will run that simple test.
A bulk test method, on the other hand, returns a new instance
of BulkTest , which can itself define new simple and bulk
test methods. By using the
BulkTest.makeSuite method, you can
automatically create a hierarchal suite of tests and child bulk tests.
For instance, consider the following two classes:
public class TestSet extends BulkTest {
private Set set;
public TestSet(Set set) {
this.set = set;
}
public void testContains() {
boolean r = set.contains(set.iterator().next()));
assertTrue("Set should contain first element, r);
}
public void testClear() {
set.clear();
assertTrue("Set should be empty after clear", set.isEmpty());
}
}
public class TestHashMap extends BulkTest {
private Map makeFullMap() {
HashMap result = new HashMap();
result.put("1", "One");
result.put("2", "Two");
return result;
}
public void testClear() {
Map map = makeFullMap();
map.clear();
assertTrue("Map empty after clear", map.isEmpty());
}
public BulkTest bulkTestKeySet() {
return new TestSet(makeFullMap().keySet());
}
public BulkTest bulkTestEntrySet() {
return new TestSet(makeFullMap().entrySet());
}
}
In the above examples, TestSet defines two
simple test methods and no bulk test methods; TestHashMap
defines one simple test method and two bulk test methods. When
makeSuite(TestHashMap.class).run is executed,
five simple test methods will be run, in this order:
- TestHashMap.testClear()
- TestHashMap.bulkTestKeySet().testContains();
- TestHashMap.bulkTestKeySet().testClear();
- TestHashMap.bulkTestEntrySet().testContains();
- TestHashMap.bulkTestEntrySet().testClear();
In the graphical junit test runners, the tests would be displayed in
the following tree:
- TestHashMap
- testClear
- bulkTestKeySet
- bulkTestEntrySet
A subclass can override a superclass's bulk test by
returning null from the bulk test method. If you only
want to override specific simple tests within a bulk test, use the
BulkTest.ignoredTests method.
Note that if you want to use the bulk test methods, you must
define your suite() method to use
BulkTest.makeSuite .
The ordinary
TestSuite constructor doesn't know how to
interpret bulk test methods.
author: Paul Jack version: $Id: BulkTest.java 201765 2005-06-25 16:39:34Z scolebourne $ |