Java 类org.mockito.internal.util.reflection.FieldReader 实例源码

项目:AndroidUnitTest    文件:AnnotationFragmentManager.java   
public void addToActivity(@NonNull Object target, Fragment fragment) {
    String tag = null;
    for (Field fragmentField : fragmentFields) {
        Fragment fragmentOfField = (Fragment) new FieldReader(target, fragmentField).read();
        if (fragment == fragmentOfField) {
            RFragment fragmentAnnotation = fragmentField.getAnnotation(RFragment.class);
            tag = fragmentAnnotation.tag();
        }
    }
    if (tag == null || tag.isEmpty()) {
        tag = fragment.getClass().toString();
    }

    ControllerActivity controllerActivity = getAndroidUnitTest().activity();
    //if no activity is create, the default activity manager behaviour is to create one
    if (controllerActivity.get() == null) {
        controllerActivity.createAndInitActivity(FragmentActivity.class, null);
        controllerActivity.setActivityState(ActivityState.CREATED);
    }

    AnnotationFragmentManager.addToActivity(getActivity(), fragment, tag);
}
项目:ServiceCOLDCache    文件:DebugManagerTest.java   
private Object readField(Object obj, String field) {
    try {
        Class clazz = obj.getClass();
        if (clazz.getName().contains("$")) {
            clazz = clazz.getSuperclass();
        }
        Field executorField = clazz.getDeclaredField(field);
        FieldReader fieldReader = new FieldReader(obj, executorField);
        return fieldReader.read();
    } catch (NoSuchFieldException e) {
        Assert.fail(e.getMessage());
    }
    return null;
}
项目:astor    文件:SpyOnInjectedFieldsHandler.java   
@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;
}
项目:astor    文件:MockScanner.java   
/**
 * 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;
}