@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; }
@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); }
@Override public Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) { return testContext.getSutDescriptor().map(sutDescriptor -> { MockProvider mockProvider = testContext.getMockProvider(); for (FieldDescriptor fieldDescriptor : testContext.getTestDescriptor() .getFieldDescriptors()) { if (!fieldDescriptor.getFake().isPresent()) { continue; } Type fieldType = fieldDescriptor.getGenericType(); TypeToken fieldTypeToken = TypeToken.of(fieldType); TypeToken rawTypeToken = getRawTypeToken(fieldType); if (fieldTypeToken.isSupertypeOf(beanClass)) { Optional<Object> foundValue = fieldDescriptor.getValue(testContext .getTestInstance()); if (foundValue.isPresent()) { return foundValue.get(); } } else if (rawTypeToken.isSupertypeOf(beanClass)) { return mockProvider.createFake(beanClass); } } return null; }).orElse(null); }
@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); }
@Override public void stop(TestContext testContext) { TestDescriptor testDescriptor = testContext.getTestDescriptor(); Object testInstance = testContext.getTestInstance(); Optional<SutDescriptor> sutDescriptor = testContext.getSutDescriptor(); Collection<Class<? extends Annotation>> guidelines = testDescriptor.getGuidelines();
@Override public Object resolve(Injectee injectee, ServiceHandle root) { return testContext.getSutDescriptor().map(sutDescriptor -> { TestDescriptor testDescriptor = testContext.getTestDescriptor(); MockProvider mockProvider = testContext.getMockProvider(); Object testInstance = testContext.getTestInstance(); Type requiredType = injectee.getRequiredType(); for (FieldDescriptor fieldDescriptor : testDescriptor.getFieldDescriptors()) { if (fieldDescriptor.getFake().isPresent()) { Type fieldType = fieldDescriptor.getGenericType(); Optional<Object> foundValue = fieldDescriptor.getValue(testInstance); if (TypeToken.of(fieldType).isSupertypeOf(requiredType) && foundValue .isPresent()) { return foundValue.get(); } else if (getRawTypeToken(fieldType).isSupertypeOf(requiredType)) { return mockProvider.createFake(TypeToken.of(requiredType) .getRawType()); } } } return null; }).orElseGet(() -> findThreeThirtyService(injectee, root)); }
TestDescriptor testDescriptor = testContext.getTestDescriptor(); MockProvider mockProvider = testContext.getMockProvider(); Object testInstance = testContext.getTestInstance();
@Override public Object resolve(Injectee injectee, ServiceHandle root) { return testContext.getSutDescriptor().map(sutDescriptor -> { TestDescriptor testDescriptor = testContext.getTestDescriptor(); MockProvider mockProvider = testContext.getMockProvider(); Object testInstance = testContext.getTestInstance(); Type requiredType = injectee.getRequiredType(); for (FieldDescriptor fieldDescriptor : testDescriptor.getFieldDescriptors()) { if (fieldDescriptor.getFake().isPresent()) { Type fieldType = fieldDescriptor.getGenericType(); Optional<Object> foundValue = fieldDescriptor.getValue(testInstance); if (TypeToken.of(fieldType).isSupertypeOf(requiredType) && foundValue .isPresent()) { return foundValue.get(); } else if (getRawTypeToken(fieldType).isSupertypeOf(requiredType)) { return mockProvider.createFake(TypeToken.of(requiredType) .getRawType()); } } } return null; }).orElseGet(() -> findThreeThirtyService(injectee, root)); }
TestDescriptor testDescriptor = testContext.getTestDescriptor(); Optional<SutDescriptor> foundSutDescriptor = testContext.getSutDescriptor(); Object testInstance = testContext.getTestInstance(); Collection<Class<? extends Annotation>> guidelines = testDescriptor.getGuidelines(); Optional<Application> foundApplication = testDescriptor.getApplication();
@Override public void start(TestContext testContext) { Object testInstance = testContext.getTestInstance(); TestConfigurer testConfigurer = testContext.getTestConfigurer(); TestDescriptor testDescriptor = testContext.getTestDescriptor();
@Override public void start(TestContext testContext) { Object testInstance = testContext.getTestInstance(); TestConfigurer testConfigurer = testContext.getTestConfigurer(); Optional<SutDescriptor> foundSutDescriptor = testContext.getSutDescriptor();