Class FeatureSpecificTestSuiteBuilder<B extends FeatureSpecificTestSuiteBuilder<B,G>,G>

java.lang.Object
com.google.common.collect.testing.FeatureSpecificTestSuiteBuilder<B,G>
Type Parameters:
B - The concrete type of this builder (the 'self-type'). All the Builder methods of this class (such as named(java.lang.String)) return this type, so that Builder methods of more derived classes can be chained onto them without casting.
G - The type of the generator to be passed to testers in the generated test suite. An instance of G should somehow provide an instance of the class under test, plus any other information required to parameterize the test.
Direct Known Subclasses:
PerCollectionSizeTestSuiteBuilder, PerCollectionSizeTestSuiteBuilder.OneSizeTestSuiteBuilder

public abstract class FeatureSpecificTestSuiteBuilder<B extends FeatureSpecificTestSuiteBuilder<B,G>,G> extends Object
Creates, based on your criteria, a JUnit test suite that exhaustively tests the object generated by a G, selecting appropriate tests by matching them against specified features.
  • Field Details

    • subjectGenerator

      private G subjectGenerator
    • setUp

      private Runnable setUp
    • tearDown

      private Runnable tearDown
    • features

      private final Set<Feature<?>> features
    • name

      private String name
    • suppressedTests

      private final Set<Method> suppressedTests
    • logger

      private static final Logger logger
  • Constructor Details

    • FeatureSpecificTestSuiteBuilder

      public FeatureSpecificTestSuiteBuilder()
  • Method Details

    • self

      protected B self()
    • usingGenerator

      protected B usingGenerator(G subjectGenerator)
    • getSubjectGenerator

      public G getSubjectGenerator()
    • withSetUp

      public B withSetUp(Runnable setUp)
    • getSetUp

      public Runnable getSetUp()
    • withTearDown

      public B withTearDown(Runnable tearDown)
    • getTearDown

      public Runnable getTearDown()
    • withFeatures

      public B withFeatures(Feature<?>... features)
      Configures this builder to produce tests appropriate for the given features. This method may be called more than once to add features in multiple groups.
    • withFeatures

      public B withFeatures(Iterable<? extends Feature<?>> features)
    • getFeatures

      public Set<Feature<?>> getFeatures()
    • named

      public B named(String name)
      Configures this builder produce a TestSuite with the given name.
    • getName

      public String getName()
    • suppressing

      public B suppressing(Method... methods)
      Prevents the given methods from being run as part of the test suite.

      Note: in principle this should never need to be used, but it might be useful if the semantics of an implementation disagree in unforeseen ways with the semantics expected by a test, or to keep dependent builds clean in spite of an erroneous test.

    • suppressing

      public B suppressing(Collection<Method> methods)
    • getSuppressedTests

      public Set<Method> getSuppressedTests()
    • createTestSuite

      public junit.framework.TestSuite createTestSuite()
      Creates a runnable JUnit test suite based on the criteria already given.
    • checkCanCreate

      protected void checkCanCreate()
      Throw IllegalStateException if createTestSuite() can't be called yet.
    • getTesters

      protected abstract List<Class<? extends AbstractTester>> getTesters()
    • matches

      private boolean matches(junit.framework.Test test)
    • intersect

      private static boolean intersect(Set<?> a, Set<?> b)
    • extractMethod

      private static Method extractMethod(junit.framework.Test test)
    • makeSuiteForTesterClass

      protected junit.framework.TestSuite makeSuiteForTesterClass(Class<? extends AbstractTester<?>> testerClass)
    • filterSuite

      private junit.framework.TestSuite filterSuite(junit.framework.TestSuite suite)
    • formatFeatureSet

      protected static String formatFeatureSet(Set<? extends Feature<?>> features)