Class JUnitPlatform

java.lang.Object
org.junit.runner.Runner
org.junit.platform.runner.JUnitPlatform
All Implemented Interfaces:
org.junit.runner.Describable, org.junit.runner.manipulation.Filterable

@API(status=STABLE, since="1.0") public class JUnitPlatform extends org.junit.runner.Runner implements org.junit.runner.manipulation.Filterable
JUnit 4 based Runner which runs tests on the JUnit Platform in a JUnit 4 environment.

Annotating a class with @RunWith(JUnitPlatform.class) allows it to be run with IDEs and build systems that support JUnit 4 but do not yet support the JUnit Platform directly.

Please note that test classes and suites annotated with @RunWith(JUnitPlatform.class) cannot be executed directly on the JUnit Platform (or as a "JUnit 5" test as documented in some IDEs). Such classes and suites can only be executed using JUnit 4 infrastructure.

Consult the various annotations in the org.junit.platform.suite.api package for configuration options.

If you do not use any configuration annotations from the org.junit.platform.suite.api package, you can simply use this runner on a test class whose programming model is supported on the JUnit Platform — for example, a JUnit Jupiter test class. Note, however, that any test class run with this runner must be public in order to be picked up by IDEs and build tools.

When used on a class that serves as a test suite and the @IncludeClassNamePatterns annotation is not present, the default include pattern "^(Test.*|.+[.$]Test.*|.*Tests?)$" will be used in order to avoid loading classes unnecessarily (see ClassNameFilter#STANDARD_INCLUDE_PATTERN).

Since:
1.0
See Also:
  • Field Details

    • EMPTY_CLASS_ARRAY

      private static final Class<?>[] EMPTY_CLASS_ARRAY
    • EMPTY_STRING_ARRAY

      private static final String[] EMPTY_STRING_ARRAY
    • STANDARD_INCLUDE_PATTERN_ARRAY

      private static final String[] STANDARD_INCLUDE_PATTERN_ARRAY
    • testClass

      private final Class<?> testClass
    • launcher

      private final Launcher launcher
    • testTree

      private JUnitPlatformTestTree testTree
  • Constructor Details

    • JUnitPlatform

      public JUnitPlatform(Class<?> testClass)
    • JUnitPlatform

      JUnitPlatform(Class<?> testClass, Launcher launcher)
  • Method Details

    • getDescription

      public org.junit.runner.Description getDescription()
      Specified by:
      getDescription in interface org.junit.runner.Describable
      Specified by:
      getDescription in class org.junit.runner.Runner
    • run

      public void run(org.junit.runner.notification.RunNotifier notifier)
      Specified by:
      run in class org.junit.runner.Runner
    • generateTestTree

      private JUnitPlatformTestTree generateTestTree(LauncherDiscoveryRequest discoveryRequest)
    • createDiscoveryRequest

      private LauncherDiscoveryRequest createDiscoveryRequest()
    • addFiltersFromAnnotations

      private void addFiltersFromAnnotations(LauncherDiscoveryRequestBuilder requestBuilder, boolean isSuite)
    • getSelectorsFromAnnotations

      private List<DiscoverySelector> getSelectorsFromAnnotations()
    • transform

      private <T> List<DiscoverySelector> transform(T[] sourceElements, Function<T,DiscoverySelector> transformer)
    • addIncludeClassNamePatternFilter

      private void addIncludeClassNamePatternFilter(LauncherDiscoveryRequestBuilder requestBuilder, boolean isSuite)
    • addExcludeClassNamePatternFilter

      private void addExcludeClassNamePatternFilter(LauncherDiscoveryRequestBuilder requestBuilder)
    • addIncludePackagesFilter

      private void addIncludePackagesFilter(LauncherDiscoveryRequestBuilder requestBuilder)
    • addExcludePackagesFilter

      private void addExcludePackagesFilter(LauncherDiscoveryRequestBuilder requestBuilder)
    • addIncludedTagsFilter

      private void addIncludedTagsFilter(LauncherDiscoveryRequestBuilder requestBuilder)
    • addExcludedTagsFilter

      private void addExcludedTagsFilter(LauncherDiscoveryRequestBuilder requestBuilder)
    • addIncludedEnginesFilter

      private void addIncludedEnginesFilter(LauncherDiscoveryRequestBuilder requestBuilder)
    • addExcludedEnginesFilter

      private void addExcludedEnginesFilter(LauncherDiscoveryRequestBuilder requestBuilder)
    • getSelectedClasses

      private Class<?>[] getSelectedClasses()
    • getSelectedPackageNames

      private String[] getSelectedPackageNames()
    • getIncludedPackages

      private String[] getIncludedPackages()
    • getExcludedPackages

      private String[] getExcludedPackages()
    • getIncludedTags

      private String[] getIncludedTags()
    • getExcludedTags

      private String[] getExcludedTags()
    • getIncludedEngineIds

      private String[] getIncludedEngineIds()
    • getExcludedEngineIds

      private String[] getExcludedEngineIds()
    • getIncludeClassNamePatterns

      private String[] getIncludeClassNamePatterns(boolean isSuite)
    • getExcludeClassNamePatterns

      private String[] getExcludeClassNamePatterns()
    • trimmed

      private String[] trimmed(String[] patterns)
    • getValueFromAnnotation

      private <A extends Annotation, V> V getValueFromAnnotation(Class<A> annotationClass, Function<A,V> extractor, V defaultValue)
    • filter

      public void filter(org.junit.runner.manipulation.Filter filter) throws org.junit.runner.manipulation.NoTestsRemainException
      Specified by:
      filter in interface org.junit.runner.manipulation.Filterable
      Throws:
      org.junit.runner.manipulation.NoTestsRemainException
    • createDiscoveryRequestForUniqueIds

      private LauncherDiscoveryRequest createDiscoveryRequestForUniqueIds(Set<TestIdentifier> testIdentifiers)