Как быстро запустить статический фрагмент кода в Java с помощью IDE? - PullRequest
0 голосов
/ 23 мая 2018

Я бы хотел быстро проверить результаты статического метода, который я анализирую, в IDE, если это возможно.

public static int foo(int a, int b){
    return (a & 11) ^ b;
}

Например, щелкните правой кнопкой мыши выражение и запустите его, что-то вроде

> foo(11, 2)
> 9
> foo(28, 3)
> 11

Я не знаю результат заранее (реальный код более сложный), поэтому о модульном тестировании не может быть и речи.

Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Если вы используете IntelliJ и Java 9+, вы можете получить доступ к jshell, репли, который поставляется с Java 9 и выше.Это позволяет вставить определение метода в консоль jshell, а затем запустить его с другими параметрами.

Подробнее см. https://blog.jetbrains.com/idea/2017/09/java-9-and-intellij-idea/ (фактический раздел JShell находится на полпути и, по-видимому, не имеет прямогоссылка)

0 голосов
/ 23 мая 2018

В Java 9 вы можете использовать jshell, как указано в других ответах.

Если нет, вы все равно можете использовать модульные тесты.Технически, модульный тест не должен иметь утверждение.Вы можете иметь любой код в своем модульном тесте, что означает, что у вас также может быть что-то вроде этого:

@Test
public void getMyResult(){
    System.out.ptintln(foo(1,10));
}

Очевидно, что вы не должны фиксировать этот тест в своем репозитории исходного кода, так как тест плохо спроектирован(он всегда будет проходить, если foo не сгенерирует исключение), но для вашей цели это может помочь.

Редактировать:

Как сказал @AxelH вкомментарии, вы также можете создать простой main метод.

0 голосов
/ 23 мая 2018

В Eclipse есть так называемые Страницы Scrapbook Java : см. Справка Eclipse - Создание страницы Scrapbook Java

Начиная с Java 9 существует так называемый JShell , который также можно использовать без IDE: см. Справочный центр Oracle - Введениев JShell

Java 9 JShell можно использовать из IntelliJ IDEA: Инструменты | JSHell Console ... action.

...