Description
openedon Feb 18, 2019
I have a bunch of tests that require me to initialise a temporary directory with some files, so that the methods in my tests can read and write to it.
Currently, the solution is to implement a BeforeAll/BeforeEach tag and initialise the temporary directory for each test class.
As this is a common routine, it would be more reuse friendly if we could write an extension that encapsulates this routine, and which only needs to receive an input of a Path to initialise a temporary directory with all the files.
I envision the extension to look something like
DirectoryInitExtension.java
public class DirectoryInitExtension implements BeforeEachCallback {
private Path TEST_DATA_FOLDER;
@TempDir
public Path tempDir;
public static DirectoryInitExtension initializeWith(Path folder) {
return new DirectoryInitExtension(folder);
}
@Override
public void beforeEach(ExtensionContext extensionContext) throws IOException {
// Copy files from TEST_DATA_FOLDER into tempDir, then return this tempDir as part of the test context.
}
}
MainTest.java
@RegisterExtension
public static DirectoryResetExtension tempDir = DirectoryResetExtension.initializeWith(TEST_DATA_FOLDER);
However, as I soon learnt (thanks to a fast response here), TempDirs are not supported in extensions.
I wonder if it is a possibility to enable the same capabilities of TempDirs in extensions.
Deliverables
- Support TempDir in extensions? (Sorry, not too sure what to write here)