java - JUnit 4.x : why is @Before never executed?

标签 java junit

当我创建并运行单元测试时,(在带有 JUnit 4.5 或 4.82 的 Eclipse (Galileo) 中)
@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());
  }  
}

最佳答案

因为您正在扩展 TestCase。这是一个 JUnit3 类,因此 Eclipse 将其视为此类。 JUnit 4 不需要测试类来扩展任何东西。

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

关于java - JUnit 4.x : why is @Before never executed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3338031/

相关文章:

java - 控制 for 循环内的 if-else 语句

java - androidx.test.espresso.NoMatchingRootException : Matcher 'is toast' did not match any of the following roots:

java - 如何模拟 ResponseEntity

java - Surefire JUnit 测试不会在测试 xml 文件中记录失败的假设

java - 当我使用 GROUP BY 组合值时,如何显示 SQL 表中的更改?

Java正则表达式递归匹配

java - 如何在 Jython 项目中创建基于 Sphinx 的文档?

java - DWR调用在IE8中抛出 "Failed to read input",出现太频繁

java - 如何将 JUnit 输出分配给字符串?

java - 从测试类外部将数据传递到 JUnit 测试类