views:

104

answers:

1

Hi,

I want to do some actions before the whole test suite (also after the suite). So I wrote like:

public class PerformanceTest extends TestCase {

    @BeforeClass
    public static void suiteSetup() throws Exception {
          //do something
    }

    @AfterClass
    public static void suiteSetup() throws Exception {
          //do something
    }

    @Before
    public void setUp()  throws Exception {
          //do something
    }

    @After
    public void tearDown()  throws Exception {
          //do something
    }

    public PerformanceTest(String testName){
          super(testName);
    }

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

          Test testcase1 = new PerformanceTest("DoTest1");
          Test loadTest1 = new LoadTest(testcase1, n);

          Test testcase2 = new PerformanceTest("DoTest2");
          Test loadTest2 = new LoadTest(testcase2, n);

          return suite;
    }

    public void DoTest1 throws Throwable{
          //do something
    }

    public void DoTest2 throws Throwable{
          //do something
    }
}

But I found that it never reach the code in @BeforeClass and @AfterClass. So how could I do to solve this problem? Or is there other way to realize this? Thank you for your help.

+1  A: 

You cannot extend TestCase and use annotations at the same time.

TestCase is a JUnit 3 concept and annotations are a JUnit 4 concept.

Paul Croarkin
So how can I do in this case, to execute the initial function before the test suite programmatically or using annotations?
In fact, what I have accomplished was I put the suite() function in another class called PerformanceTestSuite{}, then I integrated the code of the initial actions in the suite() function. That worked, but...not good as I sense