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

有什么方法可以使用mockito模拟静态方法吗?[副本]

吉毅
2023-03-14

我想为我的更改编写测试,但遇到了问题--更改是在静态方法内进行的。代码如下所示

class GlobalData {
static boolean doSomething(...){...}
static xxx A() {...}
static yyy B() {...}
static void C() {
xxx a = A();
yyy b = B();

if (doSomething(a, b))
{
   a.xyz(b,42);
   ... my coode i want to test....
}
}

我想要的是模拟方法A和B,并且doSomething和所有这些在方法C中使用的静态方法,但目前我找不到任何方法来做到这一点。你现在有吗?

共有1个答案

宦砚
2023-03-14

请考虑使用PowerMock。它在Mockito上有一个扩展名为“power Mockito”。它还提供了模拟静态方法的功能。https://github.com/jayway/powermock/wiki/mockitousage

 类似资料:
  • 问题内容: 我在这里阅读了一些有关静态方法的主题,我认为我理解滥用/过度使用静态方法可能导致的问题。但是我并没有真正理解为什么很难模拟静态方法的原因。 我知道其他模拟框架(例如PowerMock)可以做到这一点,但为什么Mockito不能? 问题答案: 我认为原因可能是模拟对象库通常通过在运行时动态创建类(使用cglib)来创建模拟。这意味着他们要么在运行时实现一个接口(如果我没有记错的话,这就是

  • 问题内容: 我已经写了一家工厂来生产物体: 我想验证传递给的参数,但不知道如何模拟静态方法。我在测试用例中使用的是和。有没有模拟或验证此特定用例的好方法? 问题答案: 在Mockito上使用PowerMockito。 示例代码:

  • 我正在尝试使用JUnit、Mockito和PowerMock验证对的调用。 下面是我的测试用例: 下面是测试中的代码: 非常有趣的是,这段代码失败时出现:

  • 问题内容: 有什么方法可以使用静态字段。如果没有,还有其他方法可以做到这一点吗? 问题答案: 没有。你不能在Spring中自动连线或手动连线静态字段。为此,你必须编写自己的逻辑。

  • 实际的方法是在第3行被调用()。我已经添加了和注释。 为什么调用实际方法?我也尝试了PowerMockito.do返回,但是得到了同样的问题。