我正在尝试JUnit 5.4.0,它支持内置的@TempDir。
我正在尝试编写一个扩展,在每次测试之前通过复制一些模板文件来重置tempdir。
但是,临时目录似乎未初始化。@TempDir标记似乎没有运行。我不确定我是否做错了,但请让我知道如何解决这个问题。
这个问题只发生在扩展中。如果我把所有东西都放在MainTest.java中,这不会发生,但整个目的是为了可重用性-我想重用这个可以用内容重置自身的tempdir。
DirectoryResetExtension.java
public class DirectoryResetExtension implements BeforeEachCallback {
private Path TEST_DATA_FOLDER;
@TempDir
public Path tempDir;
public static DirectoryResetExtension initializeWith(Path folder) {
return new DirectoryResetExtension(folder);
}
@Override
public void beforeEach(ExtensionContext extensionContext) throws IOException {
System.out.println(tempDir); // Gives null!
}
}MainTest.java
public class MainTest {
@RegisterExtension
public static DirectoryResetExtension tempDir = DirectoryResetExtension.initializeWith(TEST_DATA_FOLDER);
@Test
public void easyTest() {
...
}
}预期: tempDir不为null。DirectoryResetExtension中的System.out.println(tempDir)打印有效路径。
实际: tempDir为空。
发布于 2019-02-12 21:49:35
我在Gitter上回答了你。所以我就把它复制-粘贴到这里。
扩展中不支持@TempDir。它仅在测试类中受支持。
在任何情况下,都不需要重置临时目录。
临时目录在当前“范围”之后被删除。作用域取决于您在何处声明@TempDir。
如果您希望将内容复制到temp目录中,通常会在测试类中的@BeforeAll或@BeforeEach方法中执行此操作。
如果您确实需要访问扩展中的JUnit管理的临时目录,您可以使用open a GitHub issue来讨论这种可能性。
https://stackoverflow.com/questions/54647577
复制相似问题