Пример #1
0
  public void execute(final Test testTask, TestResultProcessor testResultProcessor) {
    final TestFramework testFramework = testTask.getTestFramework();
    final WorkerTestClassProcessorFactory testInstanceFactory = testFramework.getProcessorFactory();
    final Factory<TestClassProcessor> forkingProcessorFactory =
        new Factory<TestClassProcessor>() {
          public TestClassProcessor create() {
            return new ForkingTestClassProcessor(
                workerFactory,
                testInstanceFactory,
                testTask,
                testTask.getClasspath(),
                testFramework.getWorkerConfigurationAction());
          }
        };
    Factory<TestClassProcessor> reforkingProcessorFactory =
        new Factory<TestClassProcessor>() {
          public TestClassProcessor create() {
            return new RestartEveryNTestClassProcessor(
                forkingProcessorFactory, testTask.getForkEvery());
          }
        };

    TestClassProcessor processor =
        new MaxNParallelTestClassProcessor(
            testTask.getMaxParallelForks(), reforkingProcessorFactory, actorFactor);

    final FileTree testClassFiles = testTask.getCandidateClassFiles();

    Runnable detector;
    if (testTask.isScanForTestClasses()) {
      TestFrameworkDetector testFrameworkDetector = testTask.getTestFramework().getDetector();
      testFrameworkDetector.setTestClassesDirectory(testTask.getTestClassesDir());
      testFrameworkDetector.setTestClasspath(testTask.getClasspath());
      detector = new DefaultTestClassScanner(testClassFiles, testFrameworkDetector, processor);
    } else {
      detector = new DefaultTestClassScanner(testClassFiles, null, processor);
    }
    new TestMainAction(detector, processor, testResultProcessor, new TrueTimeProvider()).run();
  }