gpt4 book ai didi

java - 为什么不删除 JUnit TemporaryFolder?

转载 作者:太空狗 更新时间:2023-10-29 22:57:26 26 4
gpt4 key购买 nike

JUnit's TemporaryFolder rule 的文档声明它创建的文件和文件夹是

"guaranteed to be deleted when the test method finishes (whether it passes or fails)"

但是,断言 TemporaryFolder 不存在会失败:

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

public class MyTest {

@Rule
public TemporaryFolder _tempFolder = new TemporaryFolder();

@After
public void after() {
assertFalse(_tempFolder.getRoot().exists()); //this assertion fails!
}

@Test
public void pass() throws IOException {
assertTrue(true);
}

我还看到文件确实存在于文件系统中。

为什么这个没有被删除?

最佳答案

这是因为 JUnit 在删除临时文件夹之前调用了 after()。您可以尝试在 @AfterClass 方法中检查临时文件夹,您会看到它已被删除。这个测试证明了这一点

public class MyTest {
static TemporaryFolder _tempFolder2;

@Rule
public TemporaryFolder _tempFolder = new TemporaryFolder();

@After
public void after() {
_tempFolder2 = _tempFolder;
System.out.println(_tempFolder2.getRoot().exists());
}

@AfterClass
public static void afterClass() {
System.out.println(_tempFolder2.getRoot().exists());
}

@Test
public void pass() {
}
}

输出

true
false

关于java - 为什么不删除 JUnit TemporaryFolder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16494459/

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