【发布时间】:2014-08-14 15:54:53
【问题描述】:
我有一个类有这样的方法
class MyClass(){
public String myMethod(){
Logger.info(new MyOtherClass().myOtherMethod());
}
}
如何使用 EasyMock 模拟 myOtherMethod() 的调用?
背景:
最初我将 myOtherMethod 写为静态方法。用于测试,因为我无法模拟静态方法调用 我最终编写了一个调用静态方法的实例方法。
我尝试使用 PowerMock 模拟我的代码的静态方法 versin,但是在使用 JSR-303 bean 验证器时它显示了一些错误(请参阅here)和我也没有找到任何将 PowerMockRunner 与 SpringJunit4ClassRunner 集成的有效解决方案,这是我的案例之一。
【问题讨论】:
-
我认为你不能使用 Easymock。试试 Powermock。
-
你不能用 EasyMock 模拟这个调用,因为你不能模拟 MyOtherClass 对象。
-
无论是模拟静态方法还是模拟构造函数,都需要使用 PowerMock。人们犯的主要错误是在 @PrepareForTest 注释中包含不正确的类。关于如何模拟静态和构造函数的文档实际上非常好。 Here's The mocking statics one 和 here's the mocking constructors one
-
实例方法正在被 powermock 模拟。但是,我得到了与here 相同的异常
标签: java unit-testing junit mocking easymock