    001    package junit.extensions;
    002
    003    import junit.framework.Protectable;
    004    import junit.framework.Test;
    005    import junit.framework.TestResult;
    006
    007    /**
    008     * A Decorator to set up and tear down additional fixture state. Subclass
    009     * TestSetup and insert it into your tests when you want to set up additional
    010     * state once before the tests are run.
    011     */
    012    public class TestSetup extends TestDecorator {
    013
    014        public TestSetup(Test test) {
    015            super(test);
    016        }
    017
    018        @Override
    019        public void run(final TestResult result) {
    020            Protectable p = new Protectable() {
    021                public void protect() throws Exception {
    022                    setUp();
    023                    basicRun(result);
    024                    tearDown();
    025                }
    026            };
    027            result.runProtected(this, p);
    028        }
    029
    030        /**
    031         * Sets up the fixture. Override to set up additional fixture state.
    032         */
    033        protected void setUp() throws Exception {
    034        }
    035
    036        /**
    037         * Tears down the fixture. Override to tear down the additional fixture
    038         * state.
    039         */
    040        protected void tearDown() throws Exception {
    041        }
    042    }