mockito mock 类的静态方法,但同一类的其他实例方法不应该被模拟,而必须正常调用

Mockito mock static method of class, but other instance methods of same class should not be mocked instead it must be called normally

提问人:Ujef Malek 提问时间:8/22/2023 最后编辑:StultuskeUjef Malek 更新时间:8/22/2023 访问量:98

问:

我有课,让我们说ABC。 在这个类中,有静态方法,在同一个类中,也存在非静态方法,比方说。public static void staticOne(){...}method1() method2()

在mockito中,我想为其中调用静态方法staticOne编写测试用例,我想模拟它。 那我该怎么做呢?method1()

我正在使用 mockito 版本 4.11.0。 我可以仅使用 mockito 解决此问题吗?

=============================================================

class ABC {

public void static staticOne(){
...
}

public string method1(){
staticOne();
...
}

}

如何在模拟staticOne时编写测试用例method1()

java 测试 mockito static-methods instance-methods

评论


答:

1赞 WLefever 8/22/2023 #1

虽然有可能,但我不推荐它。可能有一种方法可以重构静态方法并将其拆分为 util 类。

如果不可能,您可以使用并在之后创建一个实例:MockStatic

MockedStatic<ABC> staticABC = Mockito.mockStatic(ABC.class);
... // define operations on mock
ABC abc = new ABC();
abc.method1();
... // assertions

我在此存储库中添加了一个示例

评论

0赞 WLefever 8/24/2023
别客气。很高兴问题得到解决。