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    }