Как ввести метод его возвращаемое значение? - PullRequest
0 голосов
/ 26 ноября 2011

Я даже не уверен, возможно ли это, но я пришел к этой идее из-за этого вопроса: Изменить частное статическое конечное поле с помощью отражения Java

Итак, это сценарий:

public static String test() {
  return "test test test";
}

Что я хочу сделать, чтобы метод test () возвращал «сработало» вместо «тестовый тестовый тест». У кого-нибудь есть идеи, как этого добиться?

РЕДАКТИРОВАТЬ:
Я скачал Powermock и попробовал это:

package test;</p>

<p>import org.powermock.api.easymock.PowerMock;</p>

<p>public class InjectorTest {</p>

<pre><code>public static void main(final String[] args) {
    System.out.println("Before the injection:");
    System.out.println(test());

    PowerMock.mockStatic(InjectorTest.class);
    PowerMock.doReturn("worked").when(InjectorTest.class, "test");

    System.out.println("After the injection:");
    System.out.println(test());
}

public static String test() {
    return "did not work :(";
}

}

Но затмение выдает эту ошибку: метод doReturn (String) не определен для типа PowerMock
Я скачал не тот или не тот пример кода?

Поскольку я не хочу больше голосов, ПОЧЕМУ я хочу это сделать?
Я хочу внедрить Minecraft таким образом, чтобы он не использовал user.home, а относительный URI.
Таким образом, я могу сделать предустановленный портативный Minecraft для флешки для школы: D

1 Ответ

3 голосов
/ 26 ноября 2011

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

С PowerMock ваш код будет выглядеть так:

public static void main(String[] args) {
    PowerMock.mockStatic(Foo.class); 
    PowerMock.doReturn("worked").when(Foo.class, "test");
    System.out.println(Foo.test());
}

Кредиты @RC для кода выше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...