在注释之前我们还需要JUnit吗?

时间:2018-01-16 21:47:07

标签: java junit

使用Junit 4.12。 JUnit' s在记录注释之前,但在我看来它不再需要。显然,JUnit为每个测试创建一个新实例,如下面的代码片段所示:

import org.junit.Test;

public class BeforeTest {
TestObject testObject = new TestObject();

@Test
public void one(){
    System.out.println(testObject.status);
    testObject.setStatus("Used by one()");
}

@Test
public void two(){
    System.out.println(testObject.status);
    testObject.setStatus("Used by two()");
}


private class TestObject{
    public String status;

    public TestObject(){
        status = "new";
    }

    void setStatus(String newStatus){status = newStatus;}
}

}

-----------------------------
new
new

我们还需要@Before吗?

1 个答案:

答案 0 :(得分:4)

与此similar question一样,使用@Before注释的方法通常可以用构造函数/字段初始化替换。

存在一些可能会对角落情况产生影响的细微差别:

  • 异常处理:@Before中的异常导致@After被调用,构造函数中的异常不会
  • 子类初始化:@Before在构造函数完成后调用,允许访问由子类构造函数生成的任何内容
  • 子类化:使用@Before,您可以覆盖父类@Before方法,使用构造函数,您始终需要调用其中一个父类构造函数。
  • @Rule:在@Rule方法之前调用构造函数,在@Rule方法之后调用@Before