Wie verwende ich @Tempdir mit jungit 5 ​​@parametrizizedTest, um ein separates temporäres Verzeichnis für jeden Test zu Java

Java-Forum
Anonymous
 Wie verwende ich @Tempdir mit jungit 5 ​​@parametrizizedTest, um ein separates temporäres Verzeichnis für jeden Test zu

Post by Anonymous »

Ich verwende JUNIT 5's @ParameterizedTest Annotation, um Tests mit unterschiedlichen Eingaben auszuführen, und ich möchte für jeden Test ein separates temporäres Verzeichnis erstellen. So sieht mein Code aus: < /p>

Code: Select all

class MyTestClass {

static Stream syntax() {
return Stream.of(
Arguments.of("grammars/Simple.g4", "expr"),
Arguments.of("grammars/Arithmetic.g4", "prog")
);
}

@ParameterizedTest
@MethodSource("syntax")
void checksSyntax(
@TempDir final Path temp,  // Temporary directory created by JUnit
final String name,
final String rule
) {
// some testing logic
}
}

Die Methode Syntax () bietet verschiedene Eingaben für den Test, und ich möchte sicherstellen, dass jeder Testlauf über ein eigenes temporäres Verzeichnis verfügt.

Code: Select all

org.junit.jupiter.api.extension.ParameterResolutionException:
Discovered multiple competing ParameterResolvers for parameter [java.nio.file.Path arg0]
in method [void checksSyntax(java.nio.file.Path,java.lang.String,java.lang.String)]:
org.junit.jupiter.engine.extension.TempDirectory@4ae3c1cd,
org.junit.jupiter.params.ParameterizedTestParameterResolver@29f69090
< /code>
Ich habe versucht, den Code zu ändern, indem ich das temporäre Verzeichnis aus der Methodequelle übergeben habe: < /p>
static Stream syntax(@TempDir final Path temp) {
return Stream.of(
Arguments.of(temp, "grammars/Simple.g4", "expr"),
Arguments.of(temp, "grammars/Arithmetic.g4", "prog")
);
}
< /code>
Dies führt jedoch dazu, dass das gleiche temporäre Verzeichnis für alle Testfälle verwendet wird, was nicht das ist, was ich möchte. Ich brauche ein separates temporäres Verzeichnis für jeden Testfall. Was ist der richtige Weg, um @tempdir 
in parametrisierte Tests zu integrieren, ohne Konflikte mit den Parameter -Resolver von Junit zu verursachen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post