JUnit: using constructor instead of @Before

前端 未结 8 806
旧巷少年郎
旧巷少年郎 2020-12-04 14:10

I\'m using JUnit 4. I can\'t see the difference between initializing in the constructor or using a dedicated init function annotated by @Before. Does this mean

8条回答
  •  醉梦人生
    2020-12-04 15:04

    There is one thing that constructor can archive but not @Before.

    You have to use a constructor when you need to initial fields defined in parent class. For example:

    abstract class AbstractIT {
       int fieldAssignedInSubClass;
       public AbstractIT(int fieldAssignedInSubClass) {
          this.fieldAssignedInSubClass= fieldAssignedInSubClass;
       }
    
       @Before
       void before() {
          // comsume fieldAssignedInSubClass
       } 
    }
    
    public class ChildIT extends AbstractIT{
       public ChildIT() {
          // assign fieldAssignedInSubClass by constructor
          super(5566); 
       }
    
       @Before
       void before() {
          // you cannot assign fieldAssignedInSubClass by a @Before method
       } 
    }
    

提交回复
热议问题