setUp没有初始化字段

时间:2018-03-15 08:47:44

标签: java junit initialization junit4

我尝试使用以下方法每个类初始化一次设置数据。

static boolean tradeDataLoaded = false;
  static  FeedRecords  feedrecords = null;
 @Before
    public void setUp() throws Exception {
         if(!tradeDataLoaded){
              ........
            feedrecords= .......
            }
}

这种解决方法是由于@BeforeClass是静态的 - 因此不能满足我从文件初始化数据的目的。
但是,我注意到除非标记为静态的feedrecords - 它在执行的某个时刻被重置为null 它在尝试用于后续测试时给出NPE 如何以及为什么初始化数据丢失 - 测试类是否在执行测试时多次加载?

1 个答案:

答案 0 :(得分:3)

JUnit运行器可以每隔@Test实例化一个测试类,尽管不需要这样做,这就是你的情况。旧实例及其初始化将被丢弃,由于静态@TesttradeDataLoaded,为其他true创建的新实例不会执行初始化。

如果您只想初始化一些数据,则应避免使用此类变通方法并使用@BeforeClass注释:

static FeedRecords feedrecords = null;

@BeforeClass
public static void setUpClass() throws Exception {
    feedrecords = .......
}