com.google.gwt.junit.ClassBatchingStrategy Maven / Gradle / Ivy
/*
* Copyright 2009 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.junit;
import com.google.gwt.junit.client.impl.JUnitHost.TestInfo;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* Strategy that batches all tests belonging to one class.
*/
class ClassBatchingStrategy extends BatchingStrategy {
@Override
public List getTestBlocks(String syntheticModuleName) {
Set allTestsInModule = getTestsForModule(syntheticModuleName);
List testBlocks = new ArrayList();
String lastTestClass = null;
List lastTestBlock = null;
for (TestInfo testInfo : allTestsInModule) {
String testClass = testInfo.getTestClass();
if (!testClass.equals(lastTestClass)) {
// Add the last test block to the collection.
if (lastTestBlock != null) {
testBlocks.add(lastTestBlock.toArray(new TestInfo[lastTestBlock.size()]));
}
// Start a new test block.
lastTestClass = testClass;
lastTestBlock = new ArrayList();
}
lastTestBlock.add(testInfo);
}
// Add the last test block.
if (lastTestBlock != null) {
testBlocks.add(lastTestBlock.toArray(new TestInfo[lastTestBlock.size()]));
}
return testBlocks;
}
@Override
public boolean isSingleTestOnly() {
return false;
}
@Override
protected int getTimeoutMultiplier() {
return 4;
}
}