JUnit 4.x:为什么@Before从未执行过?

Ric*_*ard 3 java junit

当我创建并运行单元测试时(在Eclipse(Galileo)中使用JUnit 4.5或4.82),
@ Before永远不会被执行(?).

下面是一些示例代码.我希望输出为:

  initialize  
  testGetFour
Run Code Online (Sandbox Code Playgroud)

但它只是:

  testGetFour
Run Code Online (Sandbox Code Playgroud)

永远不会执行@BeforeClass和@AfterClass.
谁能告诉我怎么来的?

public class SomeClass
{
  public static int getFour()
  {
    return 4;
  }  
}

//---

import org.junit.Before;
import org.junit.Test;
import junit.framework.TestCase;

public class TestSomeClass extends TestCase
{
  @Before 
  public void initialize() // This method will never execute (?!).
  {
    System.err.println("initialize"); 
  }

  @Test
  public void testGetFour()
  {
    System.err.println("testGetFour");        
    assertEquals(4, SomeClass.getFour());
  }  
}
Run Code Online (Sandbox Code Playgroud)

ska*_*man 6

因为你正在扩展TestCase.这是一个JUnit3类,所以Eclipse会这样对待它.JUnit 4不要求测试类扩展任何东西.

删除它,它应该工作正常.