Вы можете использовать @TempDir
(JUnit 5.4+), описанная в §2.20.1 Руководства пользователя JUnit 5. Из руководства пользователя (выделено моим):
Встроенное расширение TempDirectory
используется для создания и очистки временного каталога для отдельного теста или всех тестов в тестовом классе. Он зарегистрирован по умолчанию. Чтобы использовать его, аннотируйте нечастное поле типа java.nio.file.Path
или java.io.File
с помощью @TempDir
или добавьте параметр типа java.nio.file.Path
или java.io.File
с аннотацией @TempDir
к методу жизненного цикла или методу тестирования.
Примечание. Это расширение было добавлено в версии 5.4
и в настоящее время (по состоянию на 5.7.2
) является экспериментальным.
Пример использования поля экземпляра:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import java.nio.file.Path; // or use java.io.File
class SomeTests {
@TempDir
Path directory; // must be non-private
}
Пример использования параметра тестового метода:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import java.nio.file.Path; // or use java.io.File
class SomeTests {
@Test
void testFoo(@TempDir Path directory) {
// do test...
}
}
Примечание. Параметры конструктора не поддерживаются.
Создание и удаление каталога описано в Javadoc от @TempDir
:
Создание временного каталога
Временный каталог создается только в том случае, если поле в тестовом классе или параметр в методе жизненного цикла или методе тестирования помечено @TempDir
. Если тип поля или тип параметра не является ни Path
, ни File
, или если временный каталог не может быть создан, будет выбрано ExtensionConfigurationException
или ParameterResolutionException
в зависимости от ситуации. Кроме того, для параметра конструктора с аннотацией @TempDir
будет выбрано значение ParameterResolutionException
.
Временная область каталога
Объем временного каталога зависит от того, где встречается первая аннотация @TempDir
при выполнении тестового класса. Временный каталог будет общим для всех тестов в классе, если аннотация присутствует в поле static
или в параметре метода @BeforeAll
. В противном случае — например, когда @TempDir
используется только в полях экземпляра или параметрах тестов, методов @BeforeEach
или @AfterEach
— каждый тест будет использовать свой собственный временный каталог.
Временное удаление каталога
Когда достигнут конец области действия временного каталога, т. е. когда тестовый метод или класс завершил выполнение, JUnit попытается рекурсивно удалить все файлы и каталоги во временном каталоге и, наконец, сам временный каталог. В случае сбоя удаления файла или каталога будет выдано IOException
, что приведет к сбою теста или тестового класса.
person
Slaw
schedule
15.06.2019