private FieldReader reader() { if (fieldReader == null) { fieldReader = new FieldReader(instance, field); } return fieldReader; }
private FieldReader reader() { if (fieldReader == null) { fieldReader = new FieldReader(instance, field); } return fieldReader; }
/** * Scan and prepare mocks for the given <code>testClassInstance</code> and <code>clazz</code> in the type hierarchy. * * @return A prepared set of mock */ private Set<Object> scan() { Set<Object> mocks = newMockSafeHashSet(); for (Field field : clazz.getDeclaredFields()) { // mock or spies only FieldReader fieldReader = new FieldReader(instance, field); Object mockInstance = preparedMock(fieldReader.read(), field); if (mockInstance != null) { mocks.add(mockInstance); } } return mocks; }
/** * Scan and prepare mocks for the given <code>testClassInstance</code> and <code>clazz</code> in the type hierarchy. * * @return A prepared set of mock */ private Set<Object> scan() { Set<Object> mocks = newMockSafeHashSet(); for (Field field : clazz.getDeclaredFields()) { // mock or spies only FieldReader fieldReader = new FieldReader(instance, field); Object mockInstance = preparedMock(fieldReader.read(), field); if (mockInstance != null) { mocks.add(mockInstance); } } return mocks; }
@Override protected boolean processInjection(Field field, Object fieldOwner, Set<Object> mockCandidates) { FieldReader fieldReader = new FieldReader(fieldOwner, field); // TODO refoctor : code duplicated in SpyAnnotationEngine if(!fieldReader.isNull() && field.isAnnotationPresent(Spy.class)) { try { Object instance = fieldReader.read(); if (MockUtil.isMock(instance)) { // A. instance has been spied earlier // B. protect against multiple use of MockitoAnnotations.initMocks() Mockito.reset(instance); } else { Object mock = Mockito.mock(instance.getClass(), withSettings() .spiedInstance(instance) .defaultAnswer(Mockito.CALLS_REAL_METHODS) .name(field.getName())); setField(fieldOwner, field, mock); } } catch (Exception e) { throw new MockitoException("Problems initiating spied field " + field.getName(), e); } } return false; } }
private FieldInitializer(Object fieldOwner, Field field, ConstructorInstantiator instantiator) { if(new FieldReader(fieldOwner, field).isNull()) { checkNotLocal(field); checkNotInner(field); checkNotInterface(field); checkNotEnum(field); checkNotAbstract(field); } this.fieldOwner = fieldOwner; this.field = field; this.instantiator = instantiator; }
private FieldInitializer(Object fieldOwner, Field field, ConstructorInstantiator instantiator) { if(new FieldReader(fieldOwner, field).isNull()) { checkNotLocal(field); checkNotInner(field); checkNotInterface(field); checkNotAbstract(field); } this.fieldOwner = fieldOwner; this.field = field; this.instantiator = instantiator; }
@Override protected boolean processInjection(Field field, Object fieldOwner, Set<Object> mockCandidates) { FieldReader fieldReader = new FieldReader(fieldOwner, field); // TODO refoctor : code duplicated in SpyAnnotationEngine if(!fieldReader.isNull() && field.isAnnotationPresent(Spy.class)) { try { Object instance = fieldReader.read(); if (new MockUtil().isMock(instance)) { // A. instance has been spied earlier // B. protect against multiple use of MockitoAnnotations.initMocks() Mockito.reset(instance); } else { new FieldSetter(fieldOwner, field).set( Mockito.mock(instance.getClass(), withSettings() .spiedInstance(instance) .defaultAnswer(Mockito.CALLS_REAL_METHODS) .name(field.getName())) ); } } catch (Exception e) { throw new MockitoException("Problems initiating spied field " + field.getName(), e); } } return false; } }
/** * @param object * {@link Object} from which to retrieve values * @param fields * The {@link Field Fields} from which to retrieve values * @return Values of the {@link Field Fields} retrieved from the object */ private OrderedSet<Object> getFieldValues(Object object, Set<Field> fields) { TreeSet<Field> sortedFields = new TreeSet<Field>(new FieldComparator()); sortedFields.addAll(fields); OrderedSet<Object> values = new OrderedSet<Object>(); for (Field field : sortedFields) { Object fieldValue = new FieldReader(object, field).read(); if (fieldValue == null) { throw new MockitoCollectionsException("The field " + field.getName() + " is null, you must initialse the fields before using Mockito-Collections"); } values.add(fieldValue); } return values; }
@SuppressWarnings({ "unchecked", "rawtypes" }) private CollectionOfMocksFieldSet getInjectableCollectionSet(Object object) { CollectionOfMocksFieldSet collectionOfMocksFieldSet = new CollectionOfMocksFieldSet(); Set<Field> fields = annotatedFieldRetriever.getAnnotatedFields(object.getClass(), uk.co.webamoeba.mockito.collections.annotation.CollectionOfMocks.class); for (Field field : fields) { Object fieldValue = new FieldReader(object, field).read(); if (!(fieldValue instanceof Collection)) { throw new MockitoCollectionsException( "Found field with CollectionOfMocksField annotation, but the field is not a Collection, field is '" + field.getName() + "'"); } Collection<?> value = (Collection<?>) fieldValue; Class<Collection<?>> typeOfCollection = (Class<Collection<?>>) ((ParameterizedType) field.getGenericType()) .getRawType(); Class typeOfElements = genericCollectionTypeResolver.getCollectionFieldType(field); CollectionOfMocksField collectionOfMocksField = new CollectionOfMocksField(value, typeOfCollection, typeOfElements); collectionOfMocksFieldSet.add(collectionOfMocksField); } return collectionOfMocksFieldSet; }
private FieldInitializer(Object fieldOwner, Field field, ConstructorInstantiator instantiator) { if(new FieldReader(fieldOwner, field).isNull()) { checkNotLocal(field); checkNotInner(field); checkNotInterface(field); checkNotAbstract(field); } this.fieldOwner = fieldOwner; this.field = field; this.instantiator = instantiator; }
@Override protected boolean processInjection(Field field, Object fieldOwner, Set<Object> mockCandidates) { FieldReader fieldReader = new FieldReader(fieldOwner, field); // TODO refoctor : code duplicated in SpyAnnotationEngine if(!fieldReader.isNull() && field.isAnnotationPresent(Spy.class)) { try { Object instance = fieldReader.read(); if (new MockUtil().isMock(instance)) { // A. instance has been spied earlier // B. protect against multiple use of MockitoAnnotations.initMocks() Mockito.reset(instance); } else { new FieldSetter(fieldOwner, field).set( Mockito.mock(instance.getClass(), withSettings() .spiedInstance(instance) .defaultAnswer(Mockito.CALLS_REAL_METHODS) .name(field.getName())) ); } } catch (Exception e) { throw new MockitoException("Problems initiating spied field " + field.getName(), e); } } return false; } }