public final class OrderedTestSuite
extends junit.framework.TestSuite
Generally, when you want to specify the order that tests will be run, you write code that looks like this.
public static Test suite() {
final TestSuite suite = new TestSuite();
suite.addTest( new FooTest("testOne") );
suite.addTest( new FooTest("testTwo") );
return suite;
}
The problem with this approach is that when testThree() is written, if it isn't
added to the suite method, it won't get executed.Using OrderedTestSuite, you write code like this:
public static Test suite() {
return new OrderedTestSuite(FooTest.class, new String[]{"testOne", "testTwo"});
}
testOne() and testTwo() will be executed in order just as in the first example. The
difference is that OrderedTestSuite will use reflection to find other methods starting
with test and will execute them. This means that if you write testThree but forget to
add it to suite() then it will still get executed, albeit not in a defined order.| Modifier and Type | Field and Description |
|---|---|
private java.lang.Class |
classToTest_ |
private java.lang.String[] |
orderedMethodNames_ |
| Constructor and Description |
|---|
OrderedTestSuite(java.lang.Class clazz,
java.lang.String[] methodNames)
Create an instance of this test suite
|
| Modifier and Type | Method and Description |
|---|---|
private void |
addMethodsInOrder(java.util.Map methodMap) |
private void |
addTest(java.lang.reflect.Method method) |
private java.util.Map |
getMatchingMethods() |
private boolean |
isMatchingMethod(java.lang.reflect.Method method) |
private final java.lang.Class classToTest_
private final java.lang.String[] orderedMethodNames_
public OrderedTestSuite(java.lang.Class clazz,
java.lang.String[] methodNames)
clazz - the class that we will use to get the individual tests.
This must be a subclass of TestCasemethodNames - The names of any methods that must be tested in order