Друзья!
Вот и наступил 2025 год — новый виток возможностей, достижений и вдохновения!
У нас впереди еще 365 дней для реализации самых смелых надежд и грандиозных планов.
Каждый из нас проходит свой уникальный путь в мире IT, но я очень рад, что именно здесь, в нашем маленьком и дружном сообществе программистов-новичков, мы собрались, чтобы учиться, расти и поддерживать друг друга 🤝.
В наступившем году хочется пожелать, чтобы наше сообщество продолжало расти, но при этом оставалось местом, где всегда можно найти помощь, совет и мотивацию. Пусть нас объединяет стремление к новым горизонтам: изучению библиотек, освоению технологий и преодолению профессиональных вызовов 💪.
И вообще я уверен, что каждый, кто решил сделать 2025-й годом больших перемен, окончательно и бесповоротно покорит Java и получит заветный оффер на 500к в секунду😂, станет независимым и востребованным специалистом в команде своей мечты! И пусть Ваши цели кажутся амбициозными, верьте: каждое усилие приближает вас к ней.
Желаю всем здоровья, счастья, любви близких и поддержки друзей. Пусть этот год принесет не только профессиональные достижения, но и внутреннюю гармонию. И главное — радуйтесь своим успехам, как большим, так и маленьким!
С Новым Годом!
Пусть 2025 станет временем, когда ваши мечты становятся реальностью, а уверенность в себе помогает двигаться только вперед! 🎉🎄🎊🎁
Вот и наступил 2025 год — новый виток возможностей, достижений и вдохновения!
У нас впереди еще 365 дней для реализации самых смелых надежд и грандиозных планов.
Каждый из нас проходит свой уникальный путь в мире IT, но я очень рад, что именно здесь, в нашем маленьком и дружном сообществе программистов-новичков, мы собрались, чтобы учиться, расти и поддерживать друг друга 🤝.
В наступившем году хочется пожелать, чтобы наше сообщество продолжало расти, но при этом оставалось местом, где всегда можно найти помощь, совет и мотивацию. Пусть нас объединяет стремление к новым горизонтам: изучению библиотек, освоению технологий и преодолению профессиональных вызовов 💪.
И вообще я уверен, что каждый, кто решил сделать 2025-й годом больших перемен, окончательно и бесповоротно покорит Java и получит заветный оффер на 500к в секунду😂, станет независимым и востребованным специалистом в команде своей мечты! И пусть Ваши цели кажутся амбициозными, верьте: каждое усилие приближает вас к ней.
Желаю всем здоровья, счастья, любви близких и поддержки друзей. Пусть этот год принесет не только профессиональные достижения, но и внутреннюю гармонию. И главное — радуйтесь своим успехам, как большим, так и маленьким!
С Новым Годом!
Пусть 2025 станет временем, когда ваши мечты становятся реальностью, а уверенность в себе помогает двигаться только вперед! 🎉🎄🎊🎁
This media is not supported in your browser
VIEW IN TELEGRAM
Так и бывает со всеми мечтами 🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Тяжелые будни девопса 🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
А потом айтишники виноваты во всем 🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Иногда так хочется уехать в никуда... 🚘 😆
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Даже комментариев не надо 😊
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
И попробуй такому в прибавке откажи 😏 💀
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Просто ха-ха 😆
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Ой, спалился🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
HTML язык программирования? Жестко 🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Дебаггер дихлофос😂🤪
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Ой...😱🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Кто себя узнал?🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
А платить будут как обычному разрабу😡🧐😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Тестеры, мы Вас уважаем и ценим😂😂😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Ой, как же так?! 😎🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Это мы? 🧐😱🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
Ну что ребят, отдохнули? 😈
Сегодня продолжаем изучение тем по Java! А в воскресение вновь встречаемся)
Пишите в комментариях, если после праздников темы пойдут туго!😏
Сегодня продолжаем изучение тем по Java! А в воскресение вновь встречаемся)
Пишите в комментариях, если после праздников темы пойдут туго!
Please open Telegram to view this post
VIEW IN TELEGRAM
Аргумент-матчеры и частичное мокирование
Mockito не ограничивается базовыми функциями вроде создания моков или проверки вызовов. Продвинутые возможности библиотеки позволяют обрабатывать сложные сценарии, такие как использование аргумент-матчеров, частичное мокирование и контроль порядка вызовов.
1. Аргумент-матчеры
Аргумент-матчеры позволяют проверять вызовы методов, не завися от конкретных значений параметров. Это полезно, если параметры варьируются или неизвестны заранее.
Использование стандартных матчеров:
any – принимает любое значение:
eq – проверяет точное соответствие:
argThat – настраиваемые условия:
2. Частичное мокирование с помощью spy
Иногда требуется протестировать объект, сохранив его реальные методы, но с возможностью переопределения некоторых из них. Для этого используется spy.
Пример использования spy:
Важные моменты:
Используйте spy для реальных объектов, если нужна их логика.
Не смешивайте when и doReturn для одного и того же метода у spy (о doReturn поговорим в следующем посте).
Когда использовать эти подходы?
Аргумент-матчеры полезны для методов с динамическими параметрами.
spy – когда объект имеет сложную логику, которую нельзя полностью заменить mock.
Тест с аргумент-матчерами и spy
Допустим, у нас есть сервис:
Тест с spy:
#Java #Training #Spring #Testing #Mockito #Spy
Mockito не ограничивается базовыми функциями вроде создания моков или проверки вызовов. Продвинутые возможности библиотеки позволяют обрабатывать сложные сценарии, такие как использование аргумент-матчеров, частичное мокирование и контроль порядка вызовов.
1. Аргумент-матчеры
Аргумент-матчеры позволяют проверять вызовы методов, не завися от конкретных значений параметров. Это полезно, если параметры варьируются или неизвестны заранее.
Использование стандартных матчеров:
any – принимает любое значение:
Mockito.when(mockList.get(anyInt())).thenReturn("Default");
System.out.println(mockList.get(0)); // Выведет: Default
System.out.println(mockList.get(999)); // Выведет: Default
eq – проверяет точное соответствие:
Mockito.when(mockList.get(eq(1))).thenReturn("Specific");
System.out.println(mockList.get(1)); // Выведет: Specific
System.out.println(mockList.get(2)); // Выведет: null
argThat – настраиваемые условия:
Mockito.when(mockList.get(argThat(i -> i % 2 == 0))).thenReturn("Even");
System.out.println(mockList.get(2)); // Выведет: Even
System.out.println(mockList.get(3)); // Выведет: null
2. Частичное мокирование с помощью spy
Иногда требуется протестировать объект, сохранив его реальные методы, но с возможностью переопределения некоторых из них. Для этого используется spy.
Пример использования spy:
List<String> realList = new ArrayList<>();
List<String> spyList = Mockito.spy(realList);
// Переопределяем метод
Mockito.when(spyList.size()).thenReturn(100);
// Реальные методы продолжают работать
spyList.add("Item");
System.out.println(spyList.get(0)); // Выведет: Item
System.out.println(spyList.size()); // Выведет: 100
Важные моменты:
Используйте spy для реальных объектов, если нужна их логика.
Не смешивайте when и doReturn для одного и того же метода у spy (о doReturn поговорим в следующем посте).
Когда использовать эти подходы?
Аргумент-матчеры полезны для методов с динамическими параметрами.
spy – когда объект имеет сложную логику, которую нельзя полностью заменить mock.
Тест с аргумент-матчерами и spy
Допустим, у нас есть сервис:
@Service
public class CalculatorService {
public int add(int a, int b) {
return a + b;
}
public int multiply(int a, int b) {
return a * b;
}
}
Тест с spy:
@ExtendWith(MockitoExtension.class)
public class CalculatorServiceTest {
@Spy
private CalculatorService calculatorService;
@Test
void testPartialMocking() {
// Частично переопределяем метод
Mockito.when(calculatorService.add(anyInt(), eq(0))).thenReturn(0);
// Проверка
Assertions.assertEquals(0, calculatorService.add(10, 0)); // Переопределено
Assertions.assertEquals(30, calculatorService.add(10, 20)); // Реальная логика
// Проверяем другой метод
Assertions.assertEquals(200, calculatorService.multiply(10, 20));
}
}
#Java #Training #Spring #Testing #Mockito #Spy