gpt4 book ai didi

Java 临时文件夹 getRoot() 异常

转载 作者:搜寻专家 更新时间:2023-11-01 01:52:24 25 4
gpt4 key购买 nike

我正在尝试在我的一个 junit 中使用 org.junit.rules.TemporaryFolder 来测试文件 I/O。我已经像这样初始化了它:

代码:

   @Rule
public TemporaryFolder temporaryFolder;

@Before
public void setup() {
this.temporaryFolder = new TemporaryFolder();
}

@After
public void tearDown() {}

@Test
public void testCsvDataFile() throws IOException {
File testCsvFile = this.temporaryFolder.newFile("text.csv");
FileWriter csvFileWriter = new FileWriter(testCsvFile);
BufferedWriter bufferedWriter = new BufferedWriter(csvFileWriter);
bufferedWriter.write("col1,col2,col3\n");
bufferedWriter.write("1,test1,val1\n");
bufferedWriter.write("2,test2,val2\n");
bufferedWriter.close();
Map<Long,Data> data = MyReader.readCSV(testCsvFile);
assertTrue(2 == data.size());
}

但是,我得到一个异常(exception):

异常:

java.lang.IllegalStateException: the temporary folder has not yet been created
at org.junit.rules.TemporaryFolder.getRoot(TemporaryFolder.java:127)
at org.junit.rules.TemporaryFolder.newFile(TemporaryFolder.java:64)

当我查看 TemporaryFolder 代码时,它在函数 getRoot() 中使用了一个从未设置的内部属性文件夹。构造函数设置了一个不同的字段:parentFolder。

有一个 create() 方法可以设置文件夹变量,但它被标记为仅用于测试目的。

我正在使用 JDK 1.7。我是否错误地构建了 TemporaryFolder?还有什么需要为此设置的系统属性吗?

最佳答案

构造函数不能在setup()中调用,必须是:

   @Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();

@Before
public void setup() {...}

@After
public void tearDown() {...}

关于Java 临时文件夹 getRoot() 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22844420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com