com.fitbur.mockito.internal.configuration.injection.ConstructorInjection Maven / Gradle / Ivy
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package com.fitbur.mockito.internal.configuration.injection;
import com.fitbur.mockito.exceptions.Reporter;
import com.fitbur.mockito.exceptions.base.MockitoException;
import com.fitbur.mockito.internal.util.reflection.FieldInitializationReport;
import com.fitbur.mockito.internal.util.reflection.FieldInitializer;
import com.fitbur.mockito.internal.util.reflection.FieldInitializer.ConstructorArgumentResolver;
import static com.fitbur.mockito.exceptions.Reporter.fieldInitialisationThrewException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* Injection strategy based on constructor.
*
*
* The strategy will search for the constructor with most parameters
* and try to resolve mocks by type.
*
*
*
* TODO on missing mock type, shall it abandon or create "noname" mocks.
* TODO and what if the arg type is not mockable.
*
*
*
* For now the algorithm tries to create anonymous mocks if an argument type is missing.
* If not possible the algorithm abandon resolution.
*
*/
public class ConstructorInjection extends MockInjectionStrategy {
private ConstructorArgumentResolver argResolver;
public ConstructorInjection() { }
// visible for testing
ConstructorInjection(ConstructorArgumentResolver argResolver) {
this.argResolver = argResolver;
}
public boolean processInjection(Field field, Object fieldOwner, Set
© 2015 - 2024 Weber Informatics LLC | Privacy Policy