繁体   English   中英

如何注入方法其返回值?

[英]How to inject method its return value?

我什至不确定这是否可行,但是由于这个问题,我想出了这个主意: 使用Java反射更改私有静态最终字段

所以这是场景:

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

我要执行的操作是让test()方法返回“工作”而不是“测试测试”。 有人知道如何做到这一点吗?

编辑:
我下载了powermock并尝试了以下操作:

package test;

import org.powermock.api.easymock.PowerMock;

public class InjectorTest {

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 :(";
}

}



但是eclipse会出现此错误:对于PowerMock类型,未定义方法doReturn(String)
我下载了错误的代码还是一个错误的示例代码?

因为我不希望有更多的投票表决,为什么我要这样做?
我想以不使用user.home但使用相对URI的方式注入Minecraft。
这样,我可以为学校的USB记忆棒预装便携式Minecraft:D

我认为PowerMock可以做到这一点。 (引擎盖下的Java反射)

使用PowerMock,您的代码将如下所示:

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

上面代码中的@RC积分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM