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