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

Mockito静态函数mock[duplicate]

解晟睿
2023-03-14

我有一节课:

class Abc
{
    public static int fun() {
           // some stuff
           return 5;
    }
}
class Pqr 
{
     public int funToTest() {
            return Abc.fun();

     }
}
class PqrTest {
    public int testFunToTest() {
          Abc ob = Mockito.mock(Abc.class);
          Mockito.when(ob.fun()).thenReturn(12);   
    }
}

像这样的测试工作很好。但是由于fun()是一个静态方法,我认为不应该通过对象调用它。我如何返回12,而不使用mockito调用fun()方法的实际实现。另外,我不想像上面所做的那样,通过Abc类的模拟对象调用fun()。

共有1个答案

束帅
2023-03-14

使用PowerMock这样的工具可以实现您想要实现的目标。

同时,您应该意识到,当您从测试的角度来看它时,有一些代码是“错误的”。如果是这种情况,那么正确的方法是更改代码,直到它易于测试为止。大多数情况下,您会发现通过这种更改,代码变得“更好”:错误更少,更易于理解和维护,更易于使用。

 类似资料:
  • 拥有一个内部生成错误消息的类,并使用android的静态函数util。日志i(String,String)来记录错误(可能是其他静态函数来记录故障)。 测试旨在验证是否记录了错误消息(使用mockito inline 3.8.0): 如何模仿android。util。登录并验证其静态android。util。日志已使用字符串调用i(String,String)? (powermock不是选项。它使

  • 我有一个Springboot应用程序,它在运行时根据用户传递的输入参数从中查找bean。对于这种方法,我试图编写Mockito测试用例,但它不起作用,并抛出NullPointerException。 引导应用程序的类: 我试图为其编写测试用例的类: 我的测试用例如下: 每当我运行测试用例时,它都会在

  • 问题内容: 我对php中的静态功能有疑问。 假设我有一堂课 如果我这样做的话,没有问题。 也可以。 头等舱和二等舱有什么区别? 静态函数有什么特别之处? 问题答案: 在第一个类中,实际上是一个实例方法,您将其作为静态方法进行调用,但由于从未引用,所以您将其取消。 静态函数与该类相关联,而不是该类的实例。因此,在静态上下文中不可用(未指向任何对象)。

  • In certain cases, unit tests may depend on classes that fetch data from live web services or databases. This is inconvenient for a few reasons: Calling live services or databases slows down test execu

  • 我找不到和之间的任何区别。据我所知,类静态函数不能被继承,struct也没有继承的选项。 请不要被类中的静态函数和类函数所混淆。 VS

  • 问题内容: 这些对象调用之间有什么区别? 非静态: 静态的: 而且在内部为什么还要对函数使用static属性? 例: 问题答案: 静态函数,根据定义,不能也不依赖于该类的任何实例属性。也就是说,它们不需要类的实例来执行(因此,可以如您所显示的那样执行,而无需先创建实例)。从某种意义上讲,这意味着该函数不必(也永远不需要)依赖于类的成员或方法(公共或私有)。