¿Cómo deshacerse de la regla TemporaryFolder en Junit5

Kirill:

Estoy migración de las pruebas unitarias de Junit4 a Junit5. En la prueba de que estoy usando TemporaryFolder la regla de API Junit4. Para mantener la prueba de trabajo I añadido @EnableRuleMigrationSupportanotación:

@EnableRuleMigrationSupport
public final class SomeTest {

    @Rule
    public final TemporaryFolder tmp = new TemporaryFolder();

   // tests ...
}

Según tengo entendido, en Junit5 I necesidad de usar extensiones en lugar de reglas , pero no puedo encontrar ningún sustituto TemporaryFolderen las extensiones Junit5. ¿Existe? Cómo reemplazar correctamente TemporaryFolderla regla con la extensión?

repollo:

Puede utilizar la @TempDiranotación (JUnit 5.4+), se describe en §2.20.1 del JUnit 5 Guía del usuario . A partir de la guía del usuario ( énfasis mío):

El built-in TempDirectoryde extensión se usa para crear y limpiar un directorio temporal para una prueba individual o todas las pruebas en una clase de prueba. Está registrado por defecto. Para usarlo, anotar un campo no privada del tipo java.nio.file.Patho java.io.Filecon @TempDiro añadir un parámetro de tipo java.nio.file.Patho java.io.Fileanotado con @TempDirun método de ciclo de vida o método de ensayo.

Nota: se añadió en la versión Esta extensión 5.4y es actualmente (en 5.5.1) experimental.

Ejemplo de utilización de un campo de instancia:

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

}

Ejemplo del uso de un parámetro de un método de ensayo:

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...
    }

}

Nota: No se admiten los parámetros del constructor.

Cuando se crea y borra el directorio se describe en el Javadoc de@TempDir :

Directorio de creación temporal

El directorio temporal sólo se crea si un campo en una clase de prueba o un parámetro en un método método de ciclo de vida o la prueba se anota con @TempDir. Si el tipo de campo o parámetro de tipo no es ni Pathni Fileo si el directorio temporal no se puede crear, una ExtensionConfigurationExceptiono ParameterResolutionExceptionserán arrojados en su caso. Además, una ParameterResolutionExceptionserá lanzada para un parámetro constructor anotado con @TempDir.

Directorio temporal Alcance

El alcance del directorio temporal depende de donde la primera @TempDirse encontró con la anotación al ejecutar una clase de prueba. El directorio temporal será compartido por todas las pruebas en una clase cuando la anotación está presente en un staticcampo o en un parámetro de un @BeforeAllmétodo. De lo contrario - por ejemplo, cuando @TempDirsólo se utiliza en campos de instancia o en los parámetros de prueba, @BeforeEacho @AfterEachmétodos - cada prueba hará uso de su propio directorio temporal.

Directorio de supresión temporal

Cuando se llega al final del alcance de un directorio temporal, es decir, cuando el método de ensayo o una clase de ejecución tiene acabado, JUnit intentará eliminar de forma recursiva todos los archivos y directorios en el directorio temporal y, por último, el directorio temporal en sí. En caso de eliminación de un archivo o directorio falla, un IOExceptionserá lanzada que hará que la clase de prueba o prueba falle.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=336451&siteId=1
Recomendado
Clasificación