@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); }
Optional<Object> value = fieldDescriptor.getValue(testInstance); if (fieldDescriptor.isMock() && value.isPresent()) { Object instance = value.get(); String name = null; TypeToken<?> token = TypeToken.of(fieldDescriptor.getGenericType()); Class contract = token.getRawType(); fieldDescriptor.getAnnotation(Named.class); Optional<com.google.inject.name.Named> guiceName = fieldDescriptor.getAnnotation( com.google.inject.name.Named.class);
@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); }
.forEach(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); }
@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)); }
.forEach(p -> p.destroy(testInstance));
@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)); }