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 "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

  • Constructor Details

    • QuarkusTestProfileAwareClassOrderer

      public QuarkusTestProfileAwareClassOrderer()
    • QuarkusTestProfileAwareClassOrderer

      QuarkusTestProfileAwareClassOrderer(String prefixQuarkusTest, String prefixQuarkusMainTest, String prefixQuarkusIntegrationTest, 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