Interface ClassOrderer

All Known Implementing Classes:
ClassOrderer.ClassName, ClassOrderer.DisplayName, ClassOrderer.OrderAnnotation, ClassOrderer.Random

@API(status=EXPERIMENTAL, since="5.8") public interface ClassOrderer
ClassOrderer defines the API for ordering top-level test classes and @Nested test classes.

In this context, the term "test class" refers to any class containing methods annotated with @Test, @RepeatedTest, @ParameterizedTest, @TestFactory, or @TestTemplate.

Top-level test classes will be ordered relative to each other; whereas, @Nested test classes will be ordered relative to other @Nested test classes sharing the same enclosing class.

A ClassOrderer can be configured globally for the entire test suite via the junit.jupiter.testclass.order.default configuration parameter (see the User Guide for details) or locally for @Nested test classes via the @TestClassOrder annotation.

Built-in Implementations

JUnit Jupiter provides the following built-in ClassOrderer implementations.

Since:
5.8
See Also:
TestClassOrder, ClassOrdererContext, orderClasses(ClassOrdererContext), MethodOrderer
  • Method Details

    • orderClasses

      void orderClasses(ClassOrdererContext context)
      Order the classes encapsulated in the supplied ClassOrdererContext.

      The classes to order or sort are made indirectly available via ClassOrdererContext.getClassDescriptors(). Since this method has a void return type, the list of class descriptors must be modified directly.

      For example, a simplified implementation of the ClassOrderer.Random ClassOrderer might look like the following.

       public void orderClasses(ClassOrdererContext context) {
           Collections.shuffle(context.getClassDescriptors());
       }
       
      Parameters:
      context - the ClassOrdererContext containing the class descriptors to order; never null