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
Nestedtest 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
FieldsModifier 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 Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final StringFields inherited from interface org.junit.jupiter.api.ClassOrderer
DEFAULT_ORDER_PROPERTY_NAME -
Constructor Summary
Constructors -
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.voidorderClasses(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:
orderClassesin 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