JUnit的TemporaryFolder规则的文档声明它创建了文件和文件夹
"保证在测试方法完成时删除(无论是通过还是失败)"
但是,断言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);
}
Run Code Online (Sandbox Code Playgroud)
我也看到文件确实存在于文件系统中.
为什么这不会被删除?
Evg*_*eev 10
这是因为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() {
}
}
Run Code Online (Sandbox Code Playgroud)
产量
true
false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6550 次 |
| 最近记录: |