@Override public Object postProcessAfterInitialization(Object bean, String beanName) { Class<? extends Object> beanClass = bean.getClass(); //XXX: DO NOT remove this method and code as it is required to extract //collaborators before the sut class is proxied down stream. Once the //sut class is proxied we will not be able to access the sut class //fields with ease. testContext.getSutDescriptor().ifPresent(sutDescriptor -> { if (sutDescriptor.isSutClass(beanClass)) { sutDescriptor.setValue(testContext.getTestInstance(), bean); } }); return bean; }
/** * Get {@link Sut} annotation. * * @return sut annotation */ default Sut getSut() { return getMember().getDeclaredAnnotation(Sut.class); }
/** * Determine if the the {@link Sut} annotation is a delegated mock. * * @return true if the member is a delegated sut */ default Boolean isVirtualSut() { return getSut().value(); }
Set<Class<? extends Annotation>> customQualifiers = serviceInstance.getCustomQualifiers(); Class sutType = sutDescriptor.getType(); .getMetaAnnotations(nameQualifers, customQualifiers); sutDescriptor.setValue(testInstance, sutInstance); });
@Override public void stop(TestContext testContext) { Object testInstance = testContext.getTestInstance(); TestDescriptor testDescriptor = testContext.getTestDescriptor(); Collection<Class<? extends Annotation>> guidelines = testDescriptor.getGuidelines(); serviceLocatorUtil .findAllWithFilter(PostVerifier.class, guidelines, UnitCategory.class) .forEach(p -> p.verify(testContext)); testContext.verify(); //invoke destroy method on fields annotated with Fixture testDescriptor.getFieldDescriptors() .forEach(p -> p.destroy(testInstance)); //invoke destroy method on sut field annotated with Fixture testContext.getSutDescriptor() .ifPresent(p -> p.destroy(testInstance)); testContext.<ServiceInstance>findProperty(SERVICE_INSTANCE) .ifPresent(ServiceInstance::destroy); resourceController.stop(testContext); }
ManagedChannel managedChannel = managedChannelBuilder.build(); Class<?> stubType = sutDescriptor.getType(); String stubTypeName = stubType.getSimpleName(); String factoryMethod;
.ifPresent(p -> p.init(testInstance));
@Override public void stop(TestContext testContext) { Object testInstance = testContext.getTestInstance(); TestDescriptor testDescriptor = testContext.getTestDescriptor(); Collection<Class<? extends Annotation>> guidelines = testDescriptor.getGuidelines(); serviceLocatorUtil .findAllWithFilter(PostVerifier.class, guidelines, IntegrationCategory.class) .forEach(p -> p.verify(testContext)); testContext.verify(); //invoke destroy method on fields annotated with Fixture testDescriptor.getFieldDescriptors() .forEach(p -> p.destroy(testInstance)); //invoke destroy method on sut field annotated with Fixture testContext.getSutDescriptor() .ifPresent(p -> p.destroy(testInstance)); if (resourceController != null) { resourceController.stop(testContext); } testContext.<ServiceInstance>findProperty(SERVICE_INSTANCE) .ifPresent(ServiceInstance::destroy); }
sutDescriptor.ifPresent(p -> p.destroy(testInstance));