我想将一些文件复制到临时目录中。但File我注释的@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);
}
}
Run Code Online (Sandbox Code Playgroud)
结果是org.opentest4j.AssertionFailedError: expected: not <null>
相反,我希望它是一个随机临时目录,就像@Rule TemporaryFolder tmpSudokus = new TemporaryFolder()Junit4 中的情况一样。
根据文档我可以注释一个Java.io.File.
如果我尝试将 tempDir 作为目录传递
@Test
public void testTempFolderParam(@TempDir File tempFolder) {
Assertions.assertNotNull(tempFolder);
}
Run Code Online (Sandbox Code Playgroud)
我明白了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'
}
Run Code Online (Sandbox Code Playgroud)
小智 2
根据文档Junit5 Docs
仅当测试类中的字段或生命周期方法或测试方法中的参数使用 @TempDir 注解时,才会创建临时目录。如果字段类型或参数类型既不是 Path 也不是 File 或者无法创建临时目录,则会酌情抛出 ExtensionConfigurationException 或 ParameterResolutionException。此外,使用 @TempDir 注解的构造函数参数将引发 ParameterResolutionException。
正如我在您的示例中看到的,您确实使用了 java.io.File,所以我猜您的问题出在临时文件夹的创建部分。
我复制了你的示例,它确实有效,tempDir 不为空
依赖关系:
| 归档时间: |
|
| 查看次数: |
1275 次 |
| 最近记录: |