我想把一些文件复制到一个临时目录中。但是,我用@TempDir注释的@TempDir似乎没有被注入。
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作为目录传递
@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项目的一部分,我的依赖项是:
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.2'
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.7.2'
}发布于 2022-02-08 15:48:45
根据文件Junit5文档
只有在使用@TempDir注释测试类中的字段或生命周期方法或测试方法中的参数时,才会创建临时目录。如果字段类型或参数类型既不是路径也不是文件,或者如果无法创建临时目录,则将抛出ExtensionConfigurationException或ParameterResolutionException作为适当的。此外,将为带有@TempDir注释的构造函数参数抛出一个ParameterResolutionException。
正如我在您的示例中所看到的,您确实使用了java.io.File,所以我猜您的问题在临时文件夹的创建部分。
我复制了您的示例,它确实工作了,tempDir不是空的。

依赖关系:
https://stackoverflow.com/questions/68143330
复制相似问题