Почему Mockito не внедряет макет общего типа?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему Mockito не внедряет макет общего типа?

Сообщение Anonymous »


Я выполняю общее обновление нашей кодовой базы (с Java 11 до 17, обновление Spring, обновление Hibernate и т. д.), а также немного тестового кода при переходе с Mockito 1.10 на 5.8.0, и обнаружил, что некоторые из наших тесты больше не работают так, как раньше.

Я попробовал несколько разных версий Mockito в диапазоне 5.x, а также экспериментировал с переходом между @Mock и @MockBean для моего имитируемого класса. Я свел проблему к этим модульным тестам, которые я добавил в GenericTypeMockTest в репозитории Mockito, который я удалил локально:

@Nested общественный класс ClassWithGenericFieldsTest { общественный класс UnderTestWithGenericField { T toBeInjected; } общественный класс ConcreteClass {} @Mock ConcreteClass введенныйMock; @InjectMocks UnderTestWithGenericField underTestWithGenericField = new UnderTestWithGenericField(); @Тест недействительный testWithGenericFields() { AssertNotNull (injectedMock); // проверяем, можем ли мы соответствовать параметрам типа тестируемого класса AssertEquals(injectedMock, underTestWithGenericField.toBeInjected); } } @Nested общественный класс SuperClassWithGenericFieldsTest { общественный класс SuperWithGenericField { List listToBeInjected; Т экземплярToBeInjected; } публичный класс ChildClass расширяет SuperWithGenericField {} общественный класс ConcreteClass {} @Mock List InjectList; @Mock ConcreteClass InjectInstance; @InjectMocks ChildClass underTestWithGenericField = новый ChildClass(); @Тест недействительный testWithGenericFields() { AssertNotNull (injectedList); AssertNotNull (injectedInstance); // проверяем, можем ли мы соответствовать параметрам типа тестируемого класса AssertEquals(injectedList, underTestWithGenericField.listToBeInjected); AssertEquals(injectedInstance, underTestWithGenericField.instanceToBeInjected); } } В первом тесте изменение поля toBeInjected и макет injectedMock на List исправляет тест, но это не отражает код, который я поддерживаю. Как показано, во второй версии теста ни то, ни другое не работает.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»