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

在easymock中模拟未知实例的方法调用

令狐功
2023-03-14

我有一个这样的类

class MyClass(){
   public String myMethod(){
       Logger.info(new MyOtherClass().myOtherMethod());
   }
}

我怎样才能使用EasyMock来模拟我的其他方法()的调用?

背景:

最初,我将myOtherMethod编写为静态方法。为了进行测试,由于我无法模拟静态方法调用,我最终编写了一个调用静态方法的实例方法
我尝试用PowerMock模拟代码的静态方法versin,但在使用JSR-303 bean验证器时出现了一些错误(请参见此处),而且我也没有找到任何将PowerMockRunner与SpringJunit4ClassRunner集成的有效解决方案,这也是我的案例之一。

共有1个答案

谯翔
2023-03-14

您可以使用PowerMock。expectNew(…) 模拟功能,如此处所述。

确保已正确注释测试用例类。很多时候,人们都忽略了必须在PrepareForTest(classthattcreatethenewinstance.class)注释中使用调用构造函数的类的细节。

如果您仍然面临错误,请发布您的测试用例代码和堆栈跟踪。

 类似资料:
  • 我尝试从以下方法创建单元测试,但我找不到一个解决方案来模拟每个方法内的调用,请您帮助我使用EasyMock为这些方法创建JUnit Test: 提前感谢

  • 在我的代码中,我有时在同一个类中调用public或private方法。这些方法并不是一个很好的候选方法,不适合被拉入自己的类中。我调用的每个方法都在它们自己的单元测试中进行测试。 那么,如果我的类a中有一个方法也在类a中调用这些方法中的每一个,有没有办法模拟这些调用?我当然可以剪切和粘贴我的期望/模拟行为,但这不仅是一件乏味的事情,它混淆了测试的要点,违反了模块化,并且由于无法控制返回的内容,使测

  • 在我的代码中,我有时在同一个类中调用公共或私有方法。这些方法不适合被拉到自己的类中。我调用的这些方法中的每一个都是在它们自己的单元测试中进行测试的。 那么,如果我的类a中有一个方法,它也调用类a中的每个方法,那么有什么方法可以模拟这些调用吗?我当然可以剪切和粘贴我的期望/模拟行为,但这不仅是乏味的,它混淆了测试的重点,违反了模块化,并且由于无法控制返回的内容而使测试更加困难。 如果不是,这种事情通

  • 模拟由某个类实现的接口方法很容易,但如果有一个类并且有一个静态方法,那么我们如何借助easymock对其进行模拟呢?? supose是一个a类,有一个void retruned方法作为公共静态void methodA(一些参数…){} 我们如何在EasyMock的帮助下模仿A的方法methodA

  • 我有以下场景: 我想在测试中覆盖公共方法methodA()的catch块。我不想更改私有方法的可见性。是否有任何方法可以使用EasyMock实现私有方法的部分模拟?或者有没有办法改变Junit类中私有方法的行为,以便在不使用mocking的情况下抛出异常? 提前谢谢。

  • 问题内容: 假设我有一个像这样的课程: 如何使用简单的模拟方法模拟静态方法调用?。 我正在使用简单的模拟3.0 问题答案: 不知道如何使用纯EasyMock,但可以考虑使用EasyMock 的PowerMock扩展。 它具有很多很酷的功能,可以满足您的需要 -https://github.com/jayway/powermock/wiki/MockStatic