如何在扩展中使用 TempDir
How to use TempDir in Extensions
我正在使用支持内置@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 不为空。 System.out.printlnDirectoryResetExtension 中的(tempDir) 打印有效路径。
实际:tempDir 为空。
我在 Gitter 上回复了你。所以我只是复制粘贴到这里。
@TempDir
在扩展中不受支持。它仅在测试 classes.
中受支持
无论如何,应该不需要重置临时目录。
临时目录在当前 "scope" 之后被删除。范围取决于您声明 @TempDir
.
的位置
如果您想将内容复制到临时目录中,您通常会在测试 class.
中的 @BeforeAll
或 @BeforeEach
方法中执行此操作
如果您确实需要在扩展中访问 JUnit 管理的临时目录,您可以open a GitHub issue讨论可能性。
我正在使用支持内置@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 不为空。 System.out.printlnDirectoryResetExtension 中的(tempDir) 打印有效路径。
实际:tempDir 为空。
我在 Gitter 上回复了你。所以我只是复制粘贴到这里。
@TempDir
在扩展中不受支持。它仅在测试 classes.
无论如何,应该不需要重置临时目录。
临时目录在当前 "scope" 之后被删除。范围取决于您声明 @TempDir
.
如果您想将内容复制到临时目录中,您通常会在测试 class.
中的@BeforeAll
或 @BeforeEach
方法中执行此操作
如果您确实需要在扩展中访问 JUnit 管理的临时目录,您可以open a GitHub issue讨论可能性。