如何测试Java中静态方法的调用次数?

如何测试Java中静态方法的调用次数?,java,unit-testing,mockito,powermockito,Java,Unit Testing,Mockito,Powermockito,我有一个带有methodA()的类,它最终调用一个返回字符串的静态methodB()methodA()可能导致多次调用methodB(),具体取决于场景 我想编写一个单元测试来验证methodA()的一次调用只会导致一次调用methodB() 如何做到这一点?我查看了PowerMockito,但没有找到合适的示例 class classA { public int methodA() { // Do something that invokes a method that in

我有一个带有
methodA()
的类,它最终调用一个返回字符串的静态
methodB()
methodA()
可能导致多次调用
methodB()
,具体取决于场景

我想编写一个单元测试来验证
methodA()
的一次调用只会导致一次调用
methodB()

如何做到这一点?我查看了PowerMockito,但没有找到合适的示例

class classA {
   public int methodA() {
      // Do something that invokes a method that in turn calls B.methodB()
   }
}

class classB {
   public static String methodB(String str) {
      // Do something
   }
}

验证静态方法调用
Mockito
是不够的。您需要使用
PowerMockito

在将
PowerMockito
添加到您的项目之前,我建议您考虑更改静态方法,并使用带有实例方法的单例


请看以下内容:

保持
static
调用计数?也许powermockito#verifystatic是您所需要的,不使用静态方法,这是一种糟糕的做法。重构你的代码,你不需要这样做。不操纵实例变量的助手方法不应该是静态的吗?谢谢,我正在看
PowerMockito
。如果可能的话,你能举个例子吗。是否可以在不将静态方法作为实例方法的情况下执行此操作?请参阅链接。关于这一点有很多问题,你的问题有点重复。有趣的是,
verifyStatic(times(n))
对我来说总是正确的,其中
n
是任意随机+ve整数。