Package gw.test

Class Suite<T extends Suite>

java.lang.Object
junit.framework.TestSuite
gw.test.Suite<T>
All Implemented Interfaces:
junit.framework.Test

public class Suite<T extends Suite> extends junit.framework.TestSuite
This Suite class streamlines and simplifies the standard JUnit TestSuite. It can be used in one of two ways: you can add individual tests to the Suite via the withTest() methods, or you can use the filter methods to pare down the tests that are found on the current classpath.
  • Field Details

    • _testClassWrappersCreated

      private boolean _testClassWrappersCreated
    • _suiteHasBeenSetUp

      private boolean _suiteHasBeenSetUp
    • _typeFilters

      private final List<Predicate<IType>> _typeFilters
    • _iFileFilters

      private final List<Predicate<IFile>> _iFileFilters
    • _packageFilters

      private final List<Predicate<String>> _packageFilters
    • _withPackages

      private final List<String> _withPackages
    • _testSpecs

      private final TreeSet<TestSpec> _testSpecs
    • _gosuClassSearchPath

      private final List<IDirectory> _gosuClassSearchPath
    • _javaClassSearchPath

      private final List<IDirectory> _javaClassSearchPath
    • _modules

      private final List<String> _modules
    • _logErrorInfo

      private boolean _logErrorInfo
    • _splitNum

      private int _splitNum
    • _splitPartition

      private int _splitPartition
    • _executionManager

      private TestExecutionManager _executionManager
    • _testEnvironment

      private TestEnvironment _testEnvironment
    • GOSU_SUITE_INCLUDE_TYPES

      public static final String GOSU_SUITE_INCLUDE_TYPES
      See Also:
    • SPLIT_PARTITION

      public static final String SPLIT_PARTITION
      See Also:
  • Constructor Details

    • Suite

      public Suite()
  • Method Details

    • getTestEnvironment

      public TestEnvironment getTestEnvironment()
    • javaAssertionsNotEnabled

      public final T javaAssertionsNotEnabled()
      Used to indicate that this suite does not require assertions be enabled. In general it is recommended that you not use this option.
    • withTest

      public final T withTest(IType type, String... methods)
      Adds a test to this Suite. This method is not to be combined with the module/filter methods.
    • withTest

      public final T withTest(String type, String... methods)
      Adds a test to this Suite. This method is not to be combined with the module/filter methods.
    • withTest

      public final T withTest(Class type, String... methods)
      Adds a test to this Suite. This method is not to be combined with the module/filter methods.
    • verifyNoFilters

      private void verifyNoFilters()
    • withTestTypeFilter

      public final T withTestTypeFilter(Predicate<IType> filter)
      Adds a type filter to this suite, allowing certain tests to be excluded. Note that this is a significantly slower option than withIFileFilter(gw.util.Predicate) or withPackageFilter(gw.util.Predicate) If possible, it is advisable to use a file filter instead.
    • withIFileFilter

      public final T withIFileFilter(Predicate<IFile> fileFilter)
      Adds a file filter to this suite, allowing certain tests to be excluded. Consider using withPackageFilter(gw.util.Predicate) if you wish to more easily apply a package filter of tests without dealing with ugly file paths. Package filters are just as fast as file filters, both of which are much faster than test type filters.
    • withPackages

      public final T withPackages(String... packagePrefixes)
      Adds a package filter that will only accept packages that are subpackages of the strings passed in.
    • ensureNoExplictlyAddedTests

      private void ensureNoExplictlyAddedTests()
    • withPackageFilter

      public final T withPackageFilter(Predicate<String> fileFilter)
      Adds a package filter to this suite, which allows you to exclude certain packages from consideration. These filters are about as fast as file filters, but are easier to write and maintain. For the common case of simply wishing to test certain packages and their sub-packages, use withPackages(String...) instead.
    • withTimeout

      public final T withTimeout(long seconds)
    • withTestEnvironment

      public T withTestEnvironment(TestEnvironment testEnvironment)
    • logErrors

      public final T logErrors()
    • withModules

      public final T withModules(String... moduleNames)
      This limits the gosu tests that are run to gosu tests that are located within the specified module in a gsrc or gtest directory AND all and java tests in the classpath that are not in a module.
      Parameters:
      moduleNames -
      Returns:
    • withClasspathEntry

      public T withClasspathEntry(File srcDir)
    • countTestCases

      public final int countTestCases()
      Specified by:
      countTestCases in interface junit.framework.Test
      Overrides:
      countTestCases in class junit.framework.TestSuite
    • testAt

      public final junit.framework.Test testAt(int index)
      Overrides:
      testAt in class junit.framework.TestSuite
    • testCount

      public final int testCount()
      Overrides:
      testCount in class junit.framework.TestSuite
    • tests

      public final Enumeration<junit.framework.Test> tests()
      Overrides:
      tests in class junit.framework.TestSuite
    • maybeCreateTestClassWrappers

      private void maybeCreateTestClassWrappers()
    • determineTestEnvironmentBasedOnTestDefaults

      private TestEnvironment determineTestEnvironmentBasedOnTestDefaults()
    • maybeInitSuite

      private void maybeInitSuite()
    • createDefaultGosuClassSearchPath

      protected List<IDirectory> createDefaultGosuClassSearchPath()
    • createDefaultJavaClassSearchPath

      protected List<IDirectory> createDefaultJavaClassSearchPath()
    • initTypeSystem

      private void initTypeSystem()
    • logError

      public void logError(String o)
    • run

      public void run(junit.framework.TestResult result)
      Specified by:
      run in interface junit.framework.Test
      Overrides:
      run in class junit.framework.TestSuite
    • beforeSuite

      protected void beforeSuite()
    • runViaStaticSuiteMethod

      public final boolean runViaStaticSuiteMethod()
      A convenience method for running this suite from a main method. Subclasses of Suite can create a main method like so:
         public static void main(String[] args) {
           System.exit( new GosuSuite().runSuite() ? 0 : 1 );
         }
       
      Returns:
      a boolean saying if all tests passed
    • runImpl

      private org.junit.runner.Result runImpl(junit.framework.Test test)
    • run

      public final org.junit.runner.Result run()
      Runs this Suite with a TextListener tied to System.out and returns the result.
    • testsAsList

      public List<junit.framework.Test> testsAsList()
    • testsAsListOfSuites

      public List<junit.framework.TestSuite> testsAsListOfSuites()
    • isLoggingErrors

      public boolean isLoggingErrors()
    • thisAsT

      private T thisAsT()
      Private method that casts the this value as a T to avoid unchecked cast errors all over the place
      Returns:
      this
    • readIntegerSystemProperty

      private Integer readIntegerSystemProperty(String name)
    • restrictTestSpecsToSpecifiedPartition

      private void restrictTestSpecsToSpecifiedPartition()
    • restrictTestSpecsToSpecifiedNames

      private void restrictTestSpecsToSpecifiedNames()
      This is for troubleshooting suite failures by running a subset of tests within a suite without requiring any Java or Gosu code changes