首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在扩展中使用TempDir

如何在扩展中使用TempDir
EN

Stack Overflow用户
提问于 2019-02-12 18:10:43
回答 1查看 1.3K关注 0票数 2

我正在尝试JUnit 5.4.0,它支持内置的@TempDir。

我正在尝试编写一个扩展,在每次测试之前通过复制一些模板文件来重置tempdir。

但是,临时目录似乎未初始化。@TempDir标记似乎没有运行。我不确定我是否做错了,但请让我知道如何解决这个问题。

这个问题只发生在扩展中。如果我把所有东西都放在MainTest.java中,这不会发生,但整个目的是为了可重用性-我想重用这个可以用内容重置自身的tempdir。

DirectoryResetExtension.java

代码语言:javascript
复制
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

代码语言:javascript
复制
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为空。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-12 21:49:35

我在Gitter上回答了你。所以我就把它复制-粘贴到这里。

扩展中不支持@TempDir。它仅在测试类中受支持。

在任何情况下,都不需要重置临时目录。

临时目录在当前“范围”之后被删除。作用域取决于您在何处声明@TempDir

如果您希望将内容复制到temp目录中,通常会在测试类中的@BeforeAll@BeforeEach方法中执行此操作。

如果您确实需要访问扩展中的JUnit管理的临时目录,您可以使用open a GitHub issue来讨论这种可能性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54647577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档