Почему Powermock PrepareForTest предотвращает ложный ввод? - PullRequest
0 голосов
/ 04 марта 2019

Мой код выглядит следующим образом:

public class RealWorldBoImpl extends AbstractBoImpl<T> implements SomeBo{}

И

@RunWith(PowerMockRunner.class)
@PrepareForTest({RealWorldBoImpl.class})
public class RealWorldBoImplTest {
    @InjectMocks
    private RealWorldBoImpl realWorldBo;
    @Mock
    private RealWorldDAO realWorldDAO;

    @Test
    public void changeStatusMainSubString() throws Exception {
        long id = 1L;
    }

В этом случае realWorldDAO не может внедрить realWorldBo.Но когда я удаляю PrepareForTest, он работает.

Я также пробовал другие классы, они работали хорошо.Кажется, RealWorldBoImpl особенный, что при подготовке к нему он не будет корректно вводить макеты.

Я отладил этот код и обнаружил, что в org.mockito.internal.util.reflection.FieldInitializer # checkParameterized конструктор.getParameterTypes () не является пустым и имеет конструктор с классом IndicateReloadClass.

private void checkParameterized(Constructor<?> constructor, Field field) {
        if(constructor.getParameterTypes().length == 0) {
            throw new MockitoException("the field " + field.getName() + " of type " + field.getType() + " has no parameterized constructor");
        }
    }

Но я не знаю, что особенного в RealWorldBoImpl.Он просто расширяет родительский класс и реализует интерфейс.Имеет ли это значение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...