Package io.quarkus.test.junit.util
Class QuarkusTestProfileAwareClassOrderer
java.lang.Object
io.quarkus.test.junit.util.QuarkusTestProfileAwareClassOrderer
- All Implemented Interfaces:
org.junit.jupiter.api.ClassOrderer
public class QuarkusTestProfileAwareClassOrderer
extends Object
implements org.junit.jupiter.api.ClassOrderer
A
Quarkus*Tests with restricted
ClassOrderer
that orders QuarkusTest
, QuarkusIntegrationTest
and QuarkusMainTest
classes
for minimum Quarkus
restarts by grouping them by their TestProfile
and QuarkusTestResource
annotation(s).
By default, Quarkus*Tests not using any profile come first, then classes using a profile (in groups) and then all other
non-Quarkus tests (e.g. plain unit tests).Quarkus*Tests with restricted
QuarkusTestResource
come
after tests with profiles and Quarkus*Tests with only unrestricted resources are handled like tests without a profile (come
first).
Internally, ordering is based on prefixes that are prepended to a secondary order suffix (by default the fully qualified
name of the respective test class), with the fully qualified class name of the
QuarkusTestProfile
as an infix (if present).
The default prefixes are defined by DEFAULT_ORDER_PREFIX_*
and can be overridden in junit-platform.properties
via CFGKEY_ORDER_PREFIX_*
, e.g. non-Quarkus tests can be run first (not last) by setting
CFGKEY_ORDER_PREFIX_NON_QUARKUS_TEST
to 10_
.
The secondary order suffix can be changed via "junit.quarkus.orderer.secondary-orderer", e.g. a value of
org.junit.jupiter.api.ClassOrderer$Random
will order the test classes
within one group randomly instead by class name.
getCustomOrderKey(ClassDescriptor, ClassOrdererContext)
can be overridden to provide a custom order number for a
given test class, e.g. based on Tag
or something else.
Limitations:
- Only JUnit5 test classes are subject to ordering, e.g. ArchUnit test classes are not passed to this orderer.
- This orderer does not handle
Nested
test classes.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.junit.jupiter.api.ClassOrderer
org.junit.jupiter.api.ClassOrderer.ClassName, org.junit.jupiter.api.ClassOrderer.DisplayName, org.junit.jupiter.api.ClassOrderer.OrderAnnotation, org.junit.jupiter.api.ClassOrderer.Random
-
Field Summary
Modifier and TypeFieldDescription(package private) static final String
(package private) static final String
(package private) static final String
(package private) static final String
(package private) static final String
protected static final String
protected static final String
protected static final String
protected static final String
Fields inherited from interface org.junit.jupiter.api.ClassOrderer
DEFAULT_ORDER_PROPERTY_NAME
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptiongetCustomOrderKey
(org.junit.jupiter.api.ClassDescriptor classDescriptor, org.junit.jupiter.api.ClassOrdererContext context) Deprecated, for removal: This API element is subject to removal in a future version.getCustomOrderKey
(org.junit.jupiter.api.ClassDescriptor classDescriptor, org.junit.jupiter.api.ClassOrdererContext context, String secondaryOrderSuffix) Template method that provides an optional custom order key for the givenclassDescriptor
.void
orderClasses
(org.junit.jupiter.api.ClassOrdererContext context)
-
Field Details
-
DEFAULT_ORDER_PREFIX_QUARKUS_TEST
- See Also:
-
DEFAULT_ORDER_PREFIX_QUARKUS_TEST_WITH_PROFILE
- See Also:
-
DEFAULT_ORDER_PREFIX_QUARKUS_TEST_WITH_RESTRICTED_RES
- See Also:
-
DEFAULT_ORDER_PREFIX_NON_QUARKUS_TEST
- See Also:
-
CFGKEY_ORDER_PREFIX_QUARKUS_TEST
- See Also:
-
CFGKEY_ORDER_PREFIX_QUARKUS_TEST_WITH_PROFILE
- See Also:
-
CFGKEY_ORDER_PREFIX_QUARKUS_TEST_WITH_RESTRICTED_RES
- See Also:
-
CFGKEY_ORDER_PREFIX_NON_QUARKUS_TEST
- See Also:
-
CFGKEY_SECONDARY_ORDERER
- See Also:
-
-
Constructor Details
-
QuarkusTestProfileAwareClassOrderer
public QuarkusTestProfileAwareClassOrderer()
-
-
Method Details
-
orderClasses
public void orderClasses(org.junit.jupiter.api.ClassOrdererContext context) - Specified by:
orderClasses
in interfaceorg.junit.jupiter.api.ClassOrderer
-
getCustomOrderKey
@Deprecated(forRemoval=true, since="2.7.0.CR1") protected Optional<String> getCustomOrderKey(org.junit.jupiter.api.ClassDescriptor classDescriptor, org.junit.jupiter.api.ClassOrdererContext context) Deprecated, for removal: This API element is subject to removal in a future version.Template method that provides an optional custom order key for the givenclassDescriptor
.- Parameters:
classDescriptor
- the respective test classcontext
- for config lookup- Returns:
- optional custom order key for the given test class
-
getCustomOrderKey
protected Optional<String> getCustomOrderKey(org.junit.jupiter.api.ClassDescriptor classDescriptor, org.junit.jupiter.api.ClassOrdererContext context, String secondaryOrderSuffix) Template method that provides an optional custom order key for the givenclassDescriptor
.- Parameters:
classDescriptor
- the respective test classcontext
- for config lookupsecondaryOrderSuffix
- the secondary order suffix that was calculated by the secondary orderer- Returns:
- optional custom order key for the given test class
-
getCustomOrderKey(ClassDescriptor, ClassOrdererContext, String)
instead