Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 04.07.2018
Сообщений: 21

Java mock: org.mockito.exceptions.misusing.MissingM­ethodInvocationException:

10.05.2024, 16:48. Показов 989. Ответов 1

Студворк — интернет-сервис помощи студентам
Я начинаю учить тестирование на спринг, столкнулся с проблемой в моках
у меня есть два класса, базовый контроллер
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@RestController
@RequestMapping("/")
public class MainController {
    @GetMapping("/")
    public String initialPage() {
        return "Hello World";
    }
 
    @GetMapping("/healthCheck")
    public String healthCheck() {
        Runtime runtime = Runtime.getRuntime();
        if (runtime != null) {
            try {
                long maxMemory = runtime.maxMemory();
                long totalMemory = runtime.totalMemory();
                long freeMemory = runtime.freeMemory();
                return "freeMemory = " + freeMemory;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return "OK";
    }
}
И тестовый класс для него
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@SpringBootTest
public class MainControllerTest {
    @Mock
    private Runtime runtime;
    @Mock
    MainController mainController;
 
    @Test
    public void testHealthCheck() throws Exception {
        // Create a mock Runtime object
 
        // Set up the behavior of the mock object
        when(runtime.maxMemory()).thenReturn(100L);
        when(runtime.totalMemory()).thenReturn(50L);
        when(runtime.freeMemory()).thenReturn(25L);
 
        // Replace the actual Runtime object with the mock object
//        Field runtimeField = MainController.class.getDeclaredField("runtime");
//        runtimeField.setAccessible(true);
//        runtimeField.set(MainController.class, runtimeMock);
 
        // Call the healthCheck method
        String result = mainController.healthCheck();
 
        // Assert the result
        assertEquals("freeMemory = 25", result);
    }
}
Все время получаю ошибку
org.mockito.exceptions.misusing.MissingM ethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.

В чем моя принципиальная ошибка?
Как правильно написать бины и сам тест?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.05.2024, 16:48
Ответы с готовыми решениями:

тест Mock Exam Engine java - ответы
У кого-нибудь есть ответы по этому тесту? Или может быть учебники "быстрый старт", чтобы большинство вопросов быстро понять и пройти...

Java Exceptions
Напишите пожалуйста маленький код, который вызывал бы одно из следующих исключений: internal error, stack overflow exception и Out Of...

Java Exceptions. Что делать с большим количеством исключений?
Приветствую! Допустим, у меня есть приложение с консольным вводом/выводом. Пользователь может вводить команды, а программа, в случае...

1
156 / 62 / 16
Регистрация: 12.12.2023
Сообщений: 389
10.05.2024, 17:21
Лучший ответ Сообщение было отмечено Tr4um как решение

Решение

Runtime.* это нативные методы и они не мокаются. Если край надо - ну значит используйте какой то свой класс в качестве прокладки к Runtime и мокайте
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2024, 17:21
Помогаю со студенческими работами здесь

Netty exceptions (java.net.BindException, Connection reset by peer)
Привет. У меня возникла такая проблема. На клиенте при отправке сообщений с большой нагрузкой возникает java.net.BindException:...

java.lang.ClassNotFoundException: org.h2.Driver
Здравствуйте создал проект на JavaFX. Так же создал две конфигурации в меню Run -> Edit Configuration. Назвал их App и AppJar. На...

Java.lang.NoClassDefFoundError : org/lwjgl/LWJGLException
Здравствуйте, пытаюсь установить lwjgl для работы в эклипс: по инструкции скачать, распаковать, указать на файлы, добавить, поправить. ...

Java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
Добрый день. есть проект на spring и сервер с tomcat, при переходе на главную страницу выдает ошибку. Не могу понять в чем ошибка. Гугл...

Ошибка java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException
При выполнении тестов через maven surefire выдаётся ошибка в момент работы с .xlsx файлом и он никак не изменяется (туда должна добавляться...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru