ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Walend <>
Subject Re: Using TestSetup in JUnit with Ant (was: How to set a property from a custom task?)
Date Fri, 21 Sep 2001 13:20:14 GMT
Paul Michali wrote:

>I thought the way JUnit worked was that it used to reflection to find
>all Test classes
>and test methods and then invoked the test methods (ones that start with

>that case, if I override TestCase with TestSetup, will JUnit use that or
>will it just
>grab and run the tests (thus not running the TestSetup.setup() method)?
To run my set up and tear down once for a whole block of tests, I use it 
like this:

public class JDBCTests extends TestCase
    public JDBCTests(String testName)

    public static Test suite()
        TestSuite suite=new TestSuite();


        return new JDBCTestSetup(suite);


You'll probably want use it like this, to save some typing:


public class YourTests extends TestCase
//all your tests

    public static Test suite()
        TestSuite suite=new TestSuite(YourTests.class);

        return new YourTestSetup(suite);


The TestSuite constructor with a Class argument uses reflection. If you 
give it a TestSetup subclass, you'll most likely get a 
NoSuchMethodException when it looks for constructors.

If you want each test to run its own set up and tear down, you'll want 
to do this:


    public static Test suite()
        TestSuite suite = new TestSuite();

        suite.addTest(new JDBCTestSetup(new 
        suite.addTest(new JDBCTestSetup(new 
        suite.addTest(new JDBCTestSetup(new 

        return suite;

But you're just starting a mail server, if it isn't there, right?

(Here, Dave shamelessly plugs his own patch.) If you want a cleaner 
stop, try using this patch:

. If the test itself throws an exception, it still calls tearDown(), to 
clean up the mess.

>Has anyone done this? I'd like to find out before I make the decision to
>alter my
>test suite (as I trying to figure out how to either do this with a
>custom Task in Ant
>or through the JUnit suite itself).
Works great.

Hope that helps,


View raw message