Package gw.test

Class Suite<T extends Suite>

  • 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 Detail

      • _testClassWrappersCreated

        private boolean _testClassWrappersCreated
      • _suiteHasBeenSetUp

        private boolean _suiteHasBeenSetUp
      • _typeFilters

        private final java.util.List<Predicate<IType>> _typeFilters
      • _iFileFilters

        private final java.util.List<Predicate<IFile>> _iFileFilters
      • _packageFilters

        private final java.util.List<Predicate<java.lang.String>> _packageFilters
      • _withPackages

        private final java.util.List<java.lang.String> _withPackages
      • _testSpecs

        private final java.util.TreeSet<TestSpec> _testSpecs
      • _gosuClassSearchPath

        private final java.util.List<IDirectory> _gosuClassSearchPath
      • _javaClassSearchPath

        private final java.util.List<IDirectory> _javaClassSearchPath
      • _modules

        private final java.util.List<java.lang.String> _modules
      • _logErrorInfo

        private boolean _logErrorInfo
      • _splitNum

        private int _splitNum
      • _splitPartition

        private int _splitPartition
      • GOSU_SUITE_INCLUDE_TYPES

        public static final java.lang.String GOSU_SUITE_INCLUDE_TYPES
        See Also:
        Constant Field Values
    • Constructor Detail

      • Suite

        public Suite()
    • Method Detail

      • 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,
                                java.lang.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​(java.lang.String type,
                                java.lang.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​(java.lang.Class type,
                                java.lang.String... methods)
        Adds a test to this Suite. This method is not to be combined with the module/filter methods.
      • verifyNoFilters

        private void verifyNoFilters()
      • 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​(java.lang.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<java.lang.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​(java.lang.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​(java.io.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 java.util.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 java.util.List<IDirectory> createDefaultGosuClassSearchPath()
      • createDefaultJavaClassSearchPath

        protected java.util.List<IDirectory> createDefaultJavaClassSearchPath()
      • initTypeSystem

        private void initTypeSystem()
      • logError

        public void logError​(java.lang.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 java.util.List<junit.framework.Test> testsAsList()
      • testsAsListOfSuites

        public java.util.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 java.lang.Integer readIntegerSystemProperty​(java.lang.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