当前位置: 首页 > 知识库问答 >
问题:

如何在Easymock中模拟静态方法

万俟靖
2023-03-14

模拟由某个类实现的接口方法很容易,但如果有一个类并且有一个静态方法,那么我们如何借助easymock对其进行模拟呢??

supose是一个a类,有一个void retruned方法作为公共静态void methodA(一些参数…){}

    class A {
public static void methodA(//some args..){
//some logic
}
}

我们如何在EasyMock的帮助下模仿A的方法methodA

共有1个答案

赵禄
2023-03-14

正如我在评论中提到的,您可以使用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

  • 我试图在静态方法中模拟静态方法。 我想知道不使用任何框架是否可能。 有没有办法达到我的目的?