模拟由某个类实现的接口方法很容易,但如果有一个类并且有一个静态方法,那么我们如何借助easymock对其进行模拟呢??
supose是一个a类,有一个void retruned方法作为公共静态void methodA(一些参数…){}
class A {
public static void methodA(//some args..){
//some logic
}
}
我们如何在EasyMock的帮助下模仿A的方法methodA
正如我在评论中提到的,您可以使用PowerMock模拟静态方法,甚至您也可以测试最终类/方法和私有方法!
从文档中:
PowerMock是一个框架,它用更强大的功能扩展了EasyMock等其他模拟库。PowerMock使用自定义类加载器和字节码操作来支持模拟静态方法、构造函数、最终类和方法、私有方法、删除静态初始值设定项等。
例如:
public class IdGenerator {
/**
* @return A new ID based on the current time.
*/
public static long generateNewId() {
return System.currentTimeMillis();
}
}
然后可以使用以下方法模拟此静态方法:
// This is the way to tell PowerMock to mock all static methods of a
// given class
mockStatic(IdGenerator.class);
/*
* The static method call to IdGenerator.generateNewId() expectation.
* This is why we need PowerMock.
*/
expect(IdGenerator.generateNewId()).andReturn(expectedId);
检查完整示例的Mocking静态方法。
问题内容: 假设我有一个像这样的课程: 如何使用简单的模拟方法模拟静态方法调用?。 我正在使用简单的模拟3.0 问题答案: 不知道如何使用纯EasyMock,但可以考虑使用EasyMock 的PowerMock扩展。 它具有很多很酷的功能,可以满足您的需要 -https://github.com/jayway/powermock/wiki/MockStatic
我有一堂这样的课: 我需要使用EasyMock模拟服务<代码>EasyMock。createMock()后跟replay()不起作用。P、 S:这是其他开发人员编写的遗留代码,我们不能在这里更改代码。
问题内容: 我有一个类,我正在为应该执行以下操作的方法编写测试: 1)它应该调用静态方法上 2)它应该从子类方法填充变量 3)它应该从传递String参数的最终帮助器类中调用静态方法 4)它应该在blockList中调用每个的run方法 到目前为止,我有这个空方法: 我正在使用JUnit,Mockito来模拟对象,并且尝试使用PowerMockito来模拟静态类和最终类(Mockito不能这样做)
我试图用Kotlin中的jMockit模拟一个静态方法: 但我得到以下错误:
我正在尝试使用EasyMock+PowerMock模拟静态方法。如果我没有模拟静态方法,那么我会得到异常java.lang.ExceptioninInitializerError,但它有一个不同的堆栈跟踪,这完全是由于我的代码文件造成的,错误是显而易见的。但是,如果我使用EasyMock+PowerMock模拟静态方法,则行PowerMock.MockStaticNice(ClassName.Cl
我试图在静态方法中模拟静态方法。 我想知道不使用任何框架是否可能。 有没有办法达到我的目的?