首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TempDir为空

TempDir为空
EN

Stack Overflow用户
提问于 2021-06-26 14:37:06
回答 1查看 571关注 0票数 5

我想把一些文件复制到一个临时目录中。但是,我用@TempDir注释的@TempDir似乎没有被注入。

代码语言:javascript
复制
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;

import java.io.File;

public class MyTempFileTest {

    @TempDir
    public File tempFolder;
    
    @Test
    public void testTempFolder() {
        Assertions.assertNotNull(tempFolder); 
    }
 }

结果是org.opentest4j.AssertionFailedError: expected: not <null>

相反,我希望它是一个随机的临时目录,就像Junit4中的Junit4那样。

根据文档,我可以注释一个Java.io.File

如果我试图将tempDir作为目录传递

代码语言:javascript
复制
    @Test
    public void testTempFolderParam(@TempDir File tempFolder) {
        Assertions.assertNotNull(tempFolder);
    }

我得到了org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [java.io.File tempFolder] in executable [public void my.package.MyTempFileTest.testTempFolderParam(java.io.File)].

该测试是android项目的一部分,我的依赖项是:

代码语言:javascript
复制
dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.2'
    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.7.2'
}
EN

回答 1

Stack Overflow用户

发布于 2022-02-08 15:48:45

根据文件Junit5文档

只有在使用@TempDir注释测试类中的字段或生命周期方法或测试方法中的参数时,才会创建临时目录。如果字段类型或参数类型既不是路径也不是文件,或者如果无法创建临时目录,则将抛出ExtensionConfigurationException或ParameterResolutionException作为适当的。此外,将为带有@TempDir注释的构造函数参数抛出一个ParameterResolutionException。

正如我在您的示例中所看到的,您确实使用了java.io.File,所以我猜您的问题在临时文件夹的创建部分。

我复制了您的示例,它确实工作了,tempDir不是空的。

依赖关系:

  • junit-木星:5.7.2
  • junit-木星-引擎:5.7.2
  • junit-木星-params:5.7.2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68143330

复制
相关文章

相似问题

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