private void maybeCreateTestClassWrappers() { maybeInitSuite(); if (!_testClassWrappersCreated) { long start = System.currentTimeMillis(); if (_testSpecs.isEmpty()) { TestClassFinder finder = new TestClassFinder(_iFileFilters, _packageFilters, _withPackages, _typeFilters); _testSpecs.addAll(finder.findTests(_gosuClassSearchPath, _javaClassSearchPath)); } restrictTestSpecsToSpecifiedNames(); for (TestSpec spec : _testSpecs) { if (_testEnvironment.isRemoteExecutionEnvironment()) { String[] methods = spec.runAllMethods() ? null : spec.getMethods(); RemoteTestClassWrapper remoteWrapper = new RemoteTestClassWrapper(_executionManager, spec.getTestTypeName(), methods); addTest(remoteWrapper); } else { IType type = spec.getTestType(); addTest(new TestClassWrapper(_executionManager, type, spec.getMethods())); } } _testClassWrappersCreated = true; long end = System.currentTimeMillis(); System.out.println("Test wrappers created in " + (end - start) + "ms"); if (_testEnvironment.isDynamicallyDeterminedEnvironment()) { _testEnvironment = determineTestEnvironmentBasedOnTestDefaults(); System.out.println( "Dynamically determined the test environment to be " + _testEnvironment.getClass()); // This is pretty hacky, but RemoteTestEnvironments need a chance to tell the remote server // what sort of environment to set up, and that actually needs to be done prior to beginning // the suite if (_testEnvironment instanceof ForwardingTestEnvironment) { _testEnvironment.initializeTypeSystem(); } _executionManager.setEnvironment(_testEnvironment); } } }