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

问题描述 投票:0回答:1

我有课,比如说 ABC。 这个类中有静态方法

public static void staticOne(){...}
在同一个类中还存在非静态方法,比如
method1() method2()

在mockito中,我想为

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

我使用的是mockito版本4.11.0。 我可以只使用mockito来解决这个问题吗?

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

class ABC {

public void static staticOne(){
...
}

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

}

如何在模拟 staticOne 时为

method1()
编写测试用例

java testing mockito static-methods instance-methods
1个回答
0
投票

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

如果不可能,您可以使用

MockStatic
,然后创建一个实例:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.