diff --git a/test-framework/bom/pom.xml b/test-framework/bom/pom.xml index 65ef018f684..1f1f2d6b664 100755 --- a/test-framework/bom/pom.xml +++ b/test-framework/bom/pom.xml @@ -39,6 +39,12 @@ ${project.version} test + + org.keycloak.testframework + keycloak-test-framework-junit5-config + ${project.version} + test + org.keycloak.testframework keycloak-test-framework-ui diff --git a/test-framework/core/pom.xml b/test-framework/core/pom.xml index 6b41630cbff..f5a7c0d8be1 100755 --- a/test-framework/core/pom.xml +++ b/test-framework/core/pom.xml @@ -43,6 +43,12 @@ org.keycloak keycloak-junit5 + + + io.quarkus + quarkus-junit5-config + + diff --git a/test-framework/examples/tests/pom.xml b/test-framework/examples/tests/pom.xml index 5de2f187a30..a136ef7f3c8 100644 --- a/test-framework/examples/tests/pom.xml +++ b/test-framework/examples/tests/pom.xml @@ -48,6 +48,10 @@ org.keycloak.testframework keycloak-test-framework-core + + org.keycloak.testframework + keycloak-test-framework-junit5-config + org.keycloak.testframework keycloak-test-framework-db-mariadb diff --git a/test-framework/junit5-config/pom.xml b/test-framework/junit5-config/pom.xml new file mode 100755 index 00000000000..f9677c5e6eb --- /dev/null +++ b/test-framework/junit5-config/pom.xml @@ -0,0 +1,42 @@ + + + + + + keycloak-test-framework-parent + org.keycloak.testframework + 999.0.0-SNAPSHOT + ../pom.xml + + 4.0.0 + + keycloak-test-framework-junit5-config + Keycloak Test Framework + jar + Default test framework config for JUnit 5 + + + + org.keycloak.testframework + keycloak-test-framework-core + ${project.version} + + + + diff --git a/test-framework/junit5-config/src/main/java/org/keycloak/testframework/ServerConfigClassOrderer.java b/test-framework/junit5-config/src/main/java/org/keycloak/testframework/ServerConfigClassOrderer.java new file mode 100644 index 00000000000..890725439c7 --- /dev/null +++ b/test-framework/junit5-config/src/main/java/org/keycloak/testframework/ServerConfigClassOrderer.java @@ -0,0 +1,38 @@ +package org.keycloak.testframework; + +import org.infinispan.util.function.SerializableComparator; +import org.junit.jupiter.api.ClassDescriptor; +import org.junit.jupiter.api.ClassOrderer; +import org.junit.jupiter.api.ClassOrdererContext; +import org.keycloak.testframework.annotations.KeycloakIntegrationTest; + +import java.util.Optional; + +public class ServerConfigClassOrderer implements ClassOrderer { + + @Override + public void orderClasses(ClassOrdererContext classOrdererContext) { + classOrdererContext.getClassDescriptors().sort(new ServerConfigComparator()); + } + + static class ServerConfigComparator implements SerializableComparator { + + @Override + public int compare(ClassDescriptor o1, ClassDescriptor o2) { + Optional a1 = o1.findAnnotation(KeycloakIntegrationTest.class); + Optional a2 = o2.findAnnotation(KeycloakIntegrationTest.class); + + if (a1.isPresent() && a2.isPresent()) { + return a1.get().config().getName().compareTo(a2.get().config().getName()); + } else if (a1.isPresent()) { + return 1; + } else if (a2.isPresent()) { + return 2; + } else { + return 0; + } + } + + } + +} diff --git a/test-framework/junit5-config/src/main/resources/junit-platform.properties b/test-framework/junit5-config/src/main/resources/junit-platform.properties new file mode 100644 index 00000000000..58d88e022b5 --- /dev/null +++ b/test-framework/junit5-config/src/main/resources/junit-platform.properties @@ -0,0 +1,2 @@ +junit.jupiter.extensions.autodetection.enabled=true +junit.jupiter.testclass.order.default=org.keycloak.testframework.ServerConfigClassOrderer \ No newline at end of file diff --git a/test-framework/pom.xml b/test-framework/pom.xml index 5dbea78e259..7cbfad02bf7 100755 --- a/test-framework/pom.xml +++ b/test-framework/pom.xml @@ -35,6 +35,7 @@ bom core + junit5-config db-mariadb db-mssql db-mysql diff --git a/tests/base/pom.xml b/tests/base/pom.xml index 1a52cc572e0..c6c5145aa3f 100755 --- a/tests/base/pom.xml +++ b/tests/base/pom.xml @@ -48,6 +48,10 @@ org.keycloak.testframework keycloak-test-framework-core + + org.keycloak.testframework + keycloak-test-framework-junit5-config + org.keycloak.testframework keycloak-test-framework-ui