我尝试使用以下方法每个类初始化一次设置数据。
static boolean tradeDataLoaded = false;
static FeedRecords feedrecords = null;
@Before
public void setUp() throws Exception {
if(!tradeDataLoaded){
........
feedrecords= .......
}
}
这种解决方法是由于@BeforeClass是静态的 - 因此不能满足我从文件初始化数据的目的。
但是,我注意到除非标记为静态的feedrecords - 它在执行的某个时刻被重置为null
它在尝试用于后续测试时给出NPE
如何以及为什么初始化数据丢失 - 测试类是否在执行测试时多次加载?
答案 0 :(得分:3)
JUnit运行器可以每隔@Test
实例化一个测试类,尽管不需要这样做,这就是你的情况。旧实例及其初始化将被丢弃,由于静态@Test
为tradeDataLoaded
,为其他true
创建的新实例不会执行初始化。
如果您只想初始化一些数据,则应避免使用此类变通方法并使用@BeforeClass
注释:
static FeedRecords feedrecords = null;
@BeforeClass
public static void setUpClass() throws Exception {
feedrecords = .......
}