public void create() { Map<DescriptorKey, ParameterDescriptor> parameterDescriptors = testContext.getParamaterDescriptors(); Map<DescriptorKey, FieldDescriptor> fieldDescriptors = testContext.getFieldDescriptors(); Object[] arguments = new Object[parameterDescriptors.size()]; Collection<FieldDescriptor> descriptors = fieldDescriptors.values(); UnitIndexFakeInjector indexInjector = new UnitIndexFakeInjector(testContext, testReifier, arguments); UnitNameFakeInjector nameInjector = new UnitNameFakeInjector(testContext, testReifier, arguments); UnitTypeFakeInjector typeInjector = new UnitTypeFakeInjector(testContext, testReifier, arguments); Set<FieldDescriptor> fakeDescriptors = descriptors.parallelStream() .filter(p -> p.hasAnnotation(Fake.class)) .collect(toSet()); //process fields with a custom index first fakeDescriptors.parallelStream() .forEach(indexInjector::inject); //process fields with custom names second fakeDescriptors.parallelStream() .forEach(nameInjector::inject); //finally process fields based on their type fakeDescriptors.parallelStream() .forEach(typeInjector::inject); testReifier.reifyCut(testContext.getCutDescriptor(), arguments); }
public void create() { Map<DescriptorKey, ParameterDescriptor> parameterDescriptors = testContext.getParamaterDescriptors(); Map<DescriptorKey, FieldDescriptor> fieldDescriptors = testContext.getFieldDescriptors(); Object[] arguments = new Object[parameterDescriptors.size()]; Collection<FieldDescriptor> descriptors = fieldDescriptors.values(); UnitIndexFakeInjector indexInjector = new UnitIndexFakeInjector(testContext, testReifier, arguments); UnitNameFakeInjector nameInjector = new UnitNameFakeInjector(testContext, testReifier, arguments); UnitTypeFakeInjector typeInjector = new UnitTypeFakeInjector(testContext, testReifier, arguments); UnitServiceFakeInjector serviceInjector = new UnitServiceFakeInjector(testContext, testReifier, arguments); Set<FieldDescriptor> fakeDescriptors = descriptors.parallelStream() .filter(p -> p.hasAnnotation(Fake.class)) .collect(toSet()); //process fields with a custom index first fakeDescriptors.parallelStream() .forEach(indexInjector::inject); //process fields with custom names second fakeDescriptors.parallelStream() .forEach(nameInjector::inject); //finally process fields based on their type fakeDescriptors.parallelStream() .forEach(typeInjector::inject); testReifier.reifyCut(testContext.getCutDescriptor(), arguments); //if there are no arguments then try to inject descriptor fields. if (arguments.length == 0) { fakeDescriptors.parallelStream() .forEach(serviceInjector::inject); } }
public void cut() { Map<DescriptorKey, ParameterDescriptor> parameterDescriptors = context.getParamaterDescriptors(); Map<DescriptorKey, FieldDescriptor> fieldDescriptors = context.getFieldDescriptors(); Object[] arguments = new Object[parameterDescriptors.size()]; Collection<FieldDescriptor> descriptors = fieldDescriptors.values();
public void cut() { Map<DescriptorKey, ParameterDescriptor> parameterDescriptors = context.getParamaterDescriptors(); Map<DescriptorKey, FieldDescriptor> fieldDescriptors = context.getFieldDescriptors(); Object[] arguments = new Object[parameterDescriptors.size()]; Collection<FieldDescriptor> descriptors = fieldDescriptors.values();
public void cut() { Map<DescriptorKey, ParameterDescriptor> parameterDescriptors = context.getParamaterDescriptors(); Map<DescriptorKey, FieldDescriptor> fieldDescriptors = context.getFieldDescriptors(); Object[] arguments = new Object[parameterDescriptors.size()]; Collection<FieldDescriptor> descriptors = fieldDescriptors.values();
public void cut() { Map<DescriptorKey, ParameterDescriptor> parameterDescriptors = context.getParamaterDescriptors(); Map<DescriptorKey, FieldDescriptor> fieldDescriptors = context.getFieldDescriptors(); Object[] arguments = new Object[parameterDescriptors.size()]; Collection<FieldDescriptor> descriptors = fieldDescriptors.values();
@Override public void configuration() { String testClassName = testContext.getTestClassName(); Collection<FieldDescriptor> fieldDescriptors = testContext.getFieldDescriptors().values(); CutDescriptor cutDescriptor = testContext.getCutDescriptor(); checkState(testContext.getConstructorCount() == 1, "Class under test '%s' has '%d' constructors. Please insure that " + "the class under test has one and only one constructor.", cutDescriptor.getTypeName(), testContext.getConstructorCount()); fieldDescriptors.parallelStream().forEach(p -> { Class<?> fieldType = p.getType(); String fieldName = p.getName(); String fieldTypeName = p.getTypeName(); checkState(!isFinal(fieldType.getModifiers()), "Field '%s' in test class '%s' can not be mocked because '%s'" + " is a final class.", fieldName, testClassName, fieldTypeName); checkState(!p.hasAnyAnnotation(Real.class, Inject.class), "Field '%s' in test class '%s' is not annotated with @Fake. " + "Note that @Real and @Inject annotations not supported for " + "unit tests. Please use @Fake instead.", fieldName, fieldTypeName ); }); }
String testClassName = testContext.getTestClassName(); CutDescriptor cutDescriptor = testContext.getCutDescriptor(); Collection<FieldDescriptor> fieldDescriptors = testContext.getFieldDescriptors().values();
@Override public void configuration() { String testClassName = testContext.getTestClassName(); Collection<FieldDescriptor> fieldDescriptors = testContext.getFieldDescriptors().values(); CutDescriptor cutDescriptor = testContext.getCutDescriptor(); checkState(cutDescriptor != null, "Test class '%s' does not define a field annotated with @Cut class.", testClassName); checkState(testContext.getConstructorCount() == 1, "Class under test '%s' defined in test class '%s' has %s constructors. " + "Please insure that the class under test has one and only one constructor.", cutDescriptor.getTypeName(), testClassName, testContext.getConstructorCount()); fieldDescriptors.parallelStream().forEach(p -> { Class<?> fieldType = p.getType(); String fieldName = p.getName(); String fieldTypeName = p.getTypeName(); checkState(!isFinal(fieldType.getModifiers()), "Field '%s' in test class '%s' can not be faked because '%s'" + " is a final class.", fieldName, testClassName, fieldTypeName); checkState(!p.hasAnyAnnotation(Real.class, Inject.class), "Field '%s' in test class '%s' is annotated with @Real or @Inject. " + "@Real and @Inject annotations are not supported for unit tests. " + "Please use @Fake instead.", fieldName, testClassName ); }); }
String testClassName = testContext.getTestClassName(); CutDescriptor cutDescriptor = testContext.getCutDescriptor(); Collection<FieldDescriptor> fieldDescriptors = testContext.getFieldDescriptors().values();
String testClassName = testContext.getTestClassName(); CutDescriptor cutDescriptor = testContext.getCutDescriptor(); Collection<FieldDescriptor> fieldDescriptors = testContext.getFieldDescriptors().values();
Set<FieldDescriptor> real = testContext.getFieldDescriptors() .values() .parallelStream()
String testClassName = testContext.getTestClassName(); CutDescriptor cutDescriptor = testContext.getCutDescriptor(); Collection<FieldDescriptor> fieldDescriptors = testContext.getFieldDescriptors().values();
Set<FieldDescriptor> real = testContext.getFieldDescriptors() .values() .parallelStream()
Set<FieldDescriptor> real = testContext.getFieldDescriptors() .values() .parallelStream()