Testing / JUnit6 Interview Questions
What is the @TempDir annotation in JUnit 6?
@TempDir is a built-in JUnit 6 extension (from junit-jupiter-api) that creates a temporary directory for a test and automatically deletes it afterwards. It eliminates the boilerplate of creating, using, and deleting temp directories manually.
import org.junit.jupiter.api.io.TempDir; import java.nio.file.Path; import java.io.File; class TempDirTest { // Method parameter injection: per-test temp directory @Test void writesAndReadsFile(@TempDir Path tempDir) throws Exception { Path file = tempDir.resolve("report.txt"); Files.writeString(file, "Test output"); assertEquals("Test output", Files.readString(file)); // Directory is automatically deleted after the test } // Field injection: same directory reused across tests in class @TempDir static Path sharedTempDir; // static = shared across all tests @Test void firstTestUsesSharedDir() throws Exception { Files.writeString(sharedTempDir.resolve("a.txt"), "hello"); } @Test void secondTestSeesFilesFromFirst() throws Exception { // sharedTempDir persists between tests (static) assertTrue(Files.exists(sharedTempDir.resolve("a.txt"))); } // Can also inject as java.io.File: @Test void withFileType(@TempDir File tempDir) { File output = new File(tempDir, "result.csv"); // ... file operations } }
More Related questions...