//@PrepareForTest({X2Client.class, TestManager.class,HttpClient.class})//要被打桩的类一定要在prepare*中声明
我的demo如下:
class Callee {
public String say(){return "not replaced";
}
}
class Caller {
private Callee callee = new Callee();
public String say() {
return callee.say();
}
}
@RunWith(PowerMockRunner.class)
public class TestCaller {
public static void sayStub(){
System.out.println("replaced");
}
@Test
@PrepareForTest(Callee.class)
public void testCaller(){
Caller caller = new Caller();
System.out.println(caller.say());
MemberModifier.stub(MemberMatcher.method(Callee.class, "say")).toReturn("replaced");
//Caller caller = new Caller();
System.out.println(caller.say());
}
}
运行结果:
not replaced
replaced
参考文章如下:
复制代码
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
29
30
31
32
33
34
35
36要模拟的类: ``` public class PrivateObject { private String privateString; public PrivateObject(String privateString) { this.privateString = privateString; } private String getPrivateString() { return this.privateString; } } ``` 使用PowerMock模拟: ``` // 类实例(class instance) PrivateObject instance = new PrivateObject (); // 模拟私有字段/变量(private field/variable) MemberModifier .field(PrivateObject .class, "privateString").set( instance , "hellomock"); // 模拟私有方法(private method) MemberModifier .stub(MemberMatcher.method(PrivateObject .class, "getPrivateString")) .toReturn( "Power Mock"); ```
最后
以上就是无聊皮带最近收集整理的关于java使用powermock修改字节码,对函数进行打桩。的全部内容,更多相关java使用powermock修改字节码内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复