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

时间:2010-07-26 18:58:53

标签: java junit

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

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

  initialize  
  testGetFour

但它只是:

  testGetFour

@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());
  }  
}

2 个答案:

答案 0 :(得分:6)

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

删除它,它应该可以正常工作。

答案 1 :(得分:3)

你不应该从TestCase扩展(使用JUnit的JUnit 3方式),它将起作用。

相关问题