## org.junit.experimental.categories
Class Categories

    java.lang.Object
      org.junit.runner.Runner
          org.junit.runners.ParentRunner<Runner>
              org.junit.runners.Suite
                  org.junit.experimental.categories.Categories

All Implemented Interfaces:
  Describable, Filterable, Orderable, Sortable

    public class Categories

extends Suite

From a given set of test classes, runs only the classes and methods that are annotated with either the category given with the @IncludeCategory annotation, or a subtype of that category.

Note that, for now, annotating suites with `@Category` has no effect. Categories must be annotated on the direct method or class.

Example:

     public interface FastTests {
     }

     public interface SlowTests {
     }

     public interface SmokeTests
     }

     public static class A {
         @Test
         public void a() {
             fail();
         }

         @Category(SlowTests.class)
         @Test
         public void b() {
         }

         @Category({FastTests.class, SmokeTests.class})
         @Test
         public void c() {
         }
     }

     @Category({SlowTests.class, FastTests.class})
     public static class B {
         @Test
         public void d() {
         }
     }

     @RunWith(Categories.class)
     @IncludeCategory(SlowTests.class)
     @SuiteClasses({A.class, B.class})
     // Note that Categories is a kind of Suite
     public static class SlowTestSuite {
         // Will run A.b and B.d, but not A.a and A.c
     }

Example to run multiple categories:

     @RunWith(Categories.class)
     @IncludeCategory({FastTests.class, SmokeTests.class})
     @SuiteClasses({A.class, B.class})
     public static class FastOrSmokeTestSuite {
         // Will run A.c and B.d, but not A.b because it is not any of FastTests or SmokeTests
     }

See Also:
  Categories at JUnit wiki

Nested Class Summary
`static class` `Categories.CategoryFilter`
`static interface` `Categories.ExcludeCategory`
`static interface` `Categories.IncludeCategory`

Nested classes/interfaces inherited from class org.junit.runners.Suite
`Suite.SuiteClasses`

Constructor Summary
`Categories(Class<?> klass, RunnerBuilder builder)`

Method Summary

Methods inherited from class org.junit.runners.Suite
`describeChild, emptySuite, getChildren, runChild`

Methods inherited from class org.junit.runners.ParentRunner
`childrenInvoker, classBlock, classRules, collectInitializationErrors, createTestClass, filter, getDescription, getName, getRunnerAnnotations, getTestClass, isIgnored, order, run, runLeaf, setScheduler, sort, validatePublicVoidNoArgMethods, withAfterClasses, withBeforeClasses, withInterruptIsolation`

Methods inherited from class org.junit.runner.Runner
`testCount`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### Categories

    public Categories(Class<?> klass,
                      RunnerBuilder builder)
               throws InitializationError

Throws:
  `InitializationError`

Copyright © 2002–2020 JUnit. All rights reserved.