Вы можете реализовать и зарегистрировать пользовательский TestExecutionListener .
Например, вы можете реализовать что-то похожее на следующее.
package my.example.package;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
import org.junit.platform.engine.TestDescriptor.Type;
import org.junit.platform.engine.TestExecutionResult;
public class DynamicTestListener implements TestExecutionListener {
private final Set<TestIdentifier> dynamicTests = Collections.synchronizedSet(new LinkedHashSet<>());
@Override
public void dynamicTestRegistered(TestIdentifier testIdentifier) {
if (testIdentifier.getType() == Type.TEST) {
this.dynamicTests.add(testIdentifier);
}
}
@Override
public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) {
if (this.dynamicTests.contains(testIdentifier)) {
System.out.println(testIdentifier.getDisplayName());
}
}
}
Приведенный выше пример может бытьавтоматически регистрируется с помощью механизма ServiceLoader
Java, помещая в src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener
(или в src/main/resources
, если вы публикуете библиотеку) следующее:
my.example.package.DynamicTestListener