package org.pitest.simpletest; import java.lang.reflect.Method; import java.util.Arrays; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import org.pitest.classinfo.ClassInfo; import org.pitest.extension.common.NoTestSuiteFinder; import org.pitest.functional.Option; import org.pitest.help.PitHelpError; import org.pitest.junit.CompoundTestUnitFinder; import org.pitest.testapi.BaseTestClassIdentifier; import org.pitest.testapi.Configuration; import org.pitest.testapi.TestClassIdentifier; import org.pitest.testapi.TestSuiteFinder; import org.pitest.testapi.TestUnitFinder; public class ConfigurationForTesting implements Configuration { private static class TestFinder implements MethodFinder { @Override public Option<TestMethod> apply(final Method method) { final TestAnnotationForTesting annotation = method .getAnnotation(TestAnnotationForTesting.class); if (annotation != null) { final Class<? extends Throwable> expected = !annotation.expected() .getName().equals(TestAnnotationForTesting.NONE.class.getName()) ? annotation .expected() : null; return Option.some(new TestMethod(method, expected)); } else { return Option.none(); } } } @Override public TestUnitFinder testUnitFinder() { final Set<MethodFinder> tmfs = new LinkedHashSet<MethodFinder>(); tmfs.add(new TestFinder()); final List<InstantiationStrategy> instantiationStrategies = Arrays .<InstantiationStrategy> asList(new NoArgsConstructorInstantiationStrategy()); return new CompoundTestUnitFinder( Collections.<TestUnitFinder> singletonList(new BasicTestUnitFinder( instantiationStrategies, tmfs))); } @Override public TestSuiteFinder testSuiteFinder() { return new NoTestSuiteFinder(); } @Override public TestClassIdentifier testClassIdentifier() { return new BaseTestClassIdentifier() { @Override public boolean isATestClass(final ClassInfo a) { return a.hasAnnotation(TestAnnotationForTesting.class); } }; } @Override public Option<PitHelpError> verifyEnvironment() { return Option.none(); } }