【发布时间】:2019-02-12 10:10:42
【问题描述】:
我正在使用支持内置 @TempDir 的 JUnit 5.4.0。
我正在尝试编写一个扩展,通过复制一些模板文件在每次测试之前重置 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 不为空。 DirectoryResetExtension 中的 System.out.println(tempDir) 打印有效路径。
实际:tempDir 为空。
【问题讨论】: