У меня есть следующие макеты для двух разных статических методов; UnitConversion.isCompatible() и Logging.error(), которые вызываются в моем методе службы.
Вот мой тестовый метод:
myService.demoMethod();
try (MockedStatic unitConversion= mockStatic(UnitConversion.class)) {
unitConversion.verify(never(), () -> UnitConversion.isCompatible(any()));
UnitConversion.isUnitsCompatible(any());
}
try (MockedStatic logging = mockStatic(Logging.class)) {
logging.verify(times(1), () -> Logging.error(any()));
Logging.error(any();
}
Первый метод никогда не вызывается, а второй вызывается один раз при отладке. Это нормально, но тест выдает ошибку «Разыскивается, но не вызывается» для второго метода. Я не уверен, следует ли мне вызывать статические методы в блоках try, поскольку я уже вызываю свой метод службы, который вызывает статические методы.
Итак, как я могу проверить вызовы статических методов с помощью MockedStatic (а не powermock и т. д.)? Должен ли я вызывать их в блоках try?
Обновление: Я использую следующий подход, но он все равно выдает ошибку "Хотелось, но не вызывается", даже если точка останова сработала один раз для статического метода, вызванного из метода службы.
// I also try to call the service method under the test here again
demoService.create(request);
try (MockedStatic mock = mockStatic(LoggingUtils.class)) {
// as the static method is void, no need to stub and not use "when()" in here
// I call the service method under the test
demoService.create(request);
// verify that the method is being invoked
mock.verify(times(1), () -> LoggingUtils.error(any(), any()));
}
Update-II:
demoService:
public CommandDTO create(final PurchaseRequest request) {
// code omitted
addLog();
return CommandDTO.builder().uuid(purchase.getUuid()).build();
}
private void addLog() {
LoggingUtils.error("error", null);
}
LoggingUtils:
public class LoggingUtils {
public static void error(String var1, Throwable var2) {
log.error(getString(var1), var2);
}
}
Подробнее здесь: https://stackoverflow.com/questions/714 ... ic-methods
Как использовать MockedStatic для проверки статических методов? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1764446580
Anonymous
У меня есть следующие макеты для двух разных статических методов; UnitConversion.isCompatible() и Logging.error(), которые вызываются в моем методе службы.
Вот мой тестовый метод:
myService.demoMethod();
try (MockedStatic unitConversion= mockStatic(UnitConversion.class)) {
unitConversion.verify(never(), () -> UnitConversion.isCompatible(any()));
UnitConversion.isUnitsCompatible(any());
}
try (MockedStatic logging = mockStatic(Logging.class)) {
logging.verify(times(1), () -> Logging.error(any()));
Logging.error(any();
}
Первый метод никогда не вызывается, а второй вызывается один раз при отладке. Это нормально, но тест выдает ошибку «Разыскивается, но не вызывается» для второго метода. Я не уверен, следует ли мне вызывать статические методы в блоках try, поскольку я уже вызываю свой метод службы, который вызывает статические методы.
Итак, как я могу проверить вызовы статических методов с помощью MockedStatic (а не powermock и т. д.)? Должен ли я вызывать их в блоках try?
[b]Обновление:[/b] Я использую следующий подход, но он все равно выдает ошибку "Хотелось, но не вызывается", даже если точка останова сработала один раз для статического метода, вызванного из метода службы.
// I also try to call the service method under the test here again
demoService.create(request);
try (MockedStatic mock = mockStatic(LoggingUtils.class)) {
// as the static method is void, no need to stub and not use "when()" in here
// I call the service method under the test
demoService.create(request);
// verify that the method is being invoked
mock.verify(times(1), () -> LoggingUtils.error(any(), any()));
}
[b]Update-II:[/b]
[b]demoService:[/b]
public CommandDTO create(final PurchaseRequest request) {
// code omitted
addLog();
return CommandDTO.builder().uuid(purchase.getUuid()).build();
}
private void addLog() {
LoggingUtils.error("error", null);
}
[b]LoggingUtils:[/b]
public class LoggingUtils {
public static void error(String var1, Throwable var2) {
log.error(getString(var1), var2);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/71425162/how-to-use-mockedstatic-verify-on-static-methods[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия