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 ClassOrderer that orders QuarkusTest, QuarkusIntegrationTest and QuarkusMainTest classes for minimum Quarkus restarts by grouping them by their TestProfile, WithTestResource, and QuarkusTestResource annotation(s).

By default, QuarkusTests not using any profile come first, then QuarkusMainTests, then QuarkusIntegrationTests, then all other non-Quarkus tests (e.g. plain unit tests).
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 application.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 "quarkus.test.class-orderer" or "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. That order will also generally be maintained across groups, with each group running according to the position of its earliest entry.

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.
  • Field Details

    • DEFAULT_ORDER_PREFIX_QUARKUS_TEST

      protected static final String DEFAULT_ORDER_PREFIX_QUARKUS_TEST
      See Also:
    • DEFAULT_ORDER_PREFIX_QUARKUS_MAIN_TEST

      protected static final String DEFAULT_ORDER_PREFIX_QUARKUS_MAIN_TEST
      See Also:
    • DEFAULT_ORDER_PREFIX_QUARKUS_INTEGRATION_TEST

      protected static final String DEFAULT_ORDER_PREFIX_QUARKUS_INTEGRATION_TEST
      See Also:
    • DEFAULT_ORDER_PREFIX_QUARKUS_COMPONENT_TEST

      protected static final String DEFAULT_ORDER_PREFIX_QUARKUS_COMPONENT_TEST
      See Also:
    • DEFAULT_ORDER_PREFIX_NON_QUARKUS_TEST

      protected static final String DEFAULT_ORDER_PREFIX_NON_QUARKUS_TEST
      See Also:
    • CFGKEY_ORDER_PREFIX_QUARKUS_TEST

      static final String CFGKEY_ORDER_PREFIX_QUARKUS_TEST
      See Also:
    • CFGKEY_ORDER_PREFIX_QUARKUS_INTEGRATION_TEST

      static final String CFGKEY_ORDER_PREFIX_QUARKUS_INTEGRATION_TEST
      See Also:
    • CFGKEY_ORDER_PREFIX_QUARKUS_MAIN_TEST

      static final String CFGKEY_ORDER_PREFIX_QUARKUS_MAIN_TEST
      See Also:
    • CFGKEY_ORDER_PREFIX_QUARKUS_COMPONENT_TEST

      static final String CFGKEY_ORDER_PREFIX_QUARKUS_COMPONENT_TEST
      See Also:
    • CFGKEY_ORDER_PREFIX_NON_QUARKUS_TEST

      static final String CFGKEY_ORDER_PREFIX_NON_QUARKUS_TEST
      See Also:
    • CFGKEY_UNDOCUMENTED_SECONDARY_ORDERER

      static final String CFGKEY_UNDOCUMENTED_SECONDARY_ORDERER
      See Also:
    • CFGKEY_DOCUMENTED_SECONDARY_ORDERER

      static final String CFGKEY_DOCUMENTED_SECONDARY_ORDERER
      See Also:
  • Constructor Details

    • QuarkusTestProfileAwareClassOrderer

      public QuarkusTestProfileAwareClassOrderer()
    • QuarkusTestProfileAwareClassOrderer

      QuarkusTestProfileAwareClassOrderer(String prefixQuarkusTest, String prefixQuarkusMainTest, String prefixQuarkusIntegrationTest, String prefixQuarkusComponentTest, String prefixNonQuarkusTest, Optional<String> secondaryOrderer)
  • Method Details

    • orderClasses

      public void orderClasses(org.junit.jupiter.api.ClassOrdererContext context)
      Specified by:
      orderClasses in interface org.junit.jupiter.api.ClassOrderer