use of com.scythe.instrumenter.InstrumentationProperties.Parameter in project kanonizo by kanonizo.
the class Framework method loadClasses.
public void loadClasses() throws ClassNotFoundException {
sut = new SystemUnderTest();
List<File> sourceFiles = findClasses(sourceFolder);
Premain.instrument = true;
for (File file : sourceFiles) {
Class<?> cl = loadClassFromFile(file);
sut.addClass(new ClassUnderTest(cl));
logger.info("Added class " + cl.getName());
}
Premain.instrument = false;
List<File> testFiles = findClasses(testFolder);
for (File file : testFiles) {
Class<?> cl = loadClassFromFile(file);
if (cl != null) {
if (Util.isTestClass(cl)) {
List<Method> testMethods = TestingUtils.getTestMethods(cl);
logger.info("Adding " + testMethods.size() + " test methods from " + cl.getName());
for (Method m : testMethods) {
if (TestingUtils.isParameterizedTest(cl, m)) {
Optional<Method> parameterMethod = Arrays.asList(cl.getMethods()).stream().filter(method -> method.getAnnotation(Parameters.class) != null).findFirst();
if (parameterMethod.isPresent()) {
try {
Iterable<Object[]> parameters = (Iterable<Object[]>) parameterMethod.get().invoke(null, new Object[] {});
for (Object[] inst : parameters) {
ParameterisedTestCase ptc = new ParameterisedTestCase(cl, m, inst);
sut.addTestCase(ptc);
}
} catch (IllegalAccessException e) {
logger.error(e);
} catch (InvocationTargetException e) {
logger.error(e);
}
} else {
logger.error("Trying to create parameterized test case that has no parameter method");
}
} else {
TestCase t = new TestCase(cl, m);
sut.addTestCase(t);
}
}
} else {
sut.addExtraClass(cl);
logger.info("Adding supporting test class " + cl.getName());
}
}
}
ClassUnderTest.resetCount();
logger.info("Finished adding source and test files. Total " + sut.getClassesUnderTest().size() + " classes and " + sut.getTestSuite().size() + " test cases");
}
Aggregations