powermock可以用来测试静态方法吗

can powermock be used to test static methods

我有以下两个类:

public class Prod
{   
    public  void logon(){        
        System.out.println("'\u000CProd  logon");        
        addUser();        
    }
        public  void addUser(){     
        System.out.println("Prod  addUser");
    }
}

public class Dev extends Prod
{
    public void addUser(){     
       System.out.println("Dev  addUser");
    }    
    public static void main(String[] args){         
       Dev test = new Dev(); 
       test.logon(); 
    }   
}

有没有办法让所有方法都静态化,然后测试 Dev.addUser() 是否正常工作?

以下是我希望能够执行的操作:

public class Prod
{   
    public static void logon(){        
        System.out.println("'\u000CProd  logon");        
        addUser();        
    }
        public static void addUser(){     
        System.out.println("Prod  addUser");
    }
}

public class Dev extends Prod
{
    public static void addUser(){     
       System.out.println("Dev  addUser");
    }    
    public static void main(String[] args){  
       logon(); 
    }   
}

当我 运行 Dev 中的 main() 时,我们应该得到:

Prod logon

Dev addUser

Is there a way to make all the methods static and then test whether the Dev.addUser() is working correctly?

不,没有。

这真的很基础Java:您想在多态上下文中使用静态方法。但是静态方法 不是 多态的。没有真正的继承,有没有超过的静态方法。请参阅 here 以获取冗长的解释。重复:无法以纯静态方式实现所需的输出,围绕 class A 扩展 class B. 故事结束。

而且正如已经说过的:从概念的角度来看,这也是错误的。由于此类限制,static 应仅在 Java 中谨慎使用。只需使用您现在拥有的非静态代码即可。

不幸的是,您的问题并不清楚您到底想测试什么,因此我无法帮助您解决这部分问题。