Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JUnit + Maven + Eclipse: Why @BeforeClass does not work?

Tags:

junit

eclipse

I am using JUnit 4, Maven 2 and latest Eclipse. Problem is simple: I would like to perform some setup (connecting to a database) before my tests are executed.

I tried @BeforeClass in many different locations but Eclipse and Maven are ignoring this. Any help on accomplishing this initial setup?

Thanks!

public abstract class BaseTestCase extends TestCase {

 @BeforeClass
    public static void doBeforeClass() throws Exception {

   System.out.println("No good @BeforeClass");

   // DO THE DATABASE SETUP

    }
}

Now the tests extending BaseTestCase:

public class LoginActionTest extends BaseTestCase {

 @Test
 public void testNothing() {

  System.out.println("TEST HERE");

  assertEquals(true, true);
 }
}

Maven and Eclipse just ignore my @BeforeClass ??? Any other way to perform setup before tests?

like image 926
TraderJoeChicago Avatar asked Jul 18 '10 06:07

TraderJoeChicago


1 Answers

Sergio, you were right about extending TestCase causing the problem. If you extend TestCase, JUnit treats your test class as an old (pre JUnit 4 class) and picks org.junit.internal.runners.JUnit38ClassRunner to run it. JUnit38ClassRunner does not know about @BeforeClass annotation. Check out source code of runnerForClass method of AllDefaultPossibilitiesBuilder and runnerForClass method of JUnit3Builder for more details.

Note: This problem is not related to Eclipse or Maven.

like image 171
Georgy Bolyuba Avatar answered Sep 19 '22 09:09

Georgy Bolyuba