JUnit + Maven + Eclipse:为什么@BeforeClass不起作用?

Tra*_*ago 8 eclipse junit

我正在使用JUnit 4,Maven 2和最新的Eclipse.问题很简单:我想在执行测试之前执行一些设置(连接到数据库).

我在许多不同的地方尝试过@BeforeClass,但Eclipse和Maven都忽略了这一点.有关完成此初始设置的任何帮助吗?

谢谢!

public abstract class BaseTestCase extends TestCase {

 @BeforeClass
    public static void doBeforeClass() throws Exception {

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

   // DO THE DATABASE SETUP

    }
}
Run Code Online (Sandbox Code Playgroud)

现在扩展BaseTestCase的测试:

public class LoginActionTest extends BaseTestCase {

 @Test
 public void testNothing() {

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

  assertEquals(true, true);
 }
}
Run Code Online (Sandbox Code Playgroud)

Maven和Eclipse只是忽略了我的@BeforeClass ??? 在测试之前执行设置的任何其他方式?

Geo*_*uba 11

塞尔吉奥,你是正确的扩展TestCase导致问题.如果扩展TestCase,JUnit会将您的测试类视为旧的(前JUnit 4类)并选择org.junit.internal.runners.JUnit38ClassRunner运行它.JUnit38ClassRunner不了解@BeforeClass注释.查看runnerForClass方法AllDefaultPossibilitiesBuilderrunnerForClass方法的源代码以JUnit3Builder获取更多详细信息.

注意:此问题与Eclipse或Maven无关.