可以使用powermock测试静态方法

时间:2018-12-14 00:59:14

标签: java static powermock

我有以下两个课程:

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()时,我们应该得到:

  

产品登录

     

Dev addUser

1 个答案:

答案 0 :(得分:0)

  

有没有一种方法可以使所有方法静态化,然后测试Dev.addUser()是否正常工作?

不,没有。

这实际上是Java的基础:您想在多态环境中使用静态方法。但是静态方法不是不是多态的。没有真正的继承,没有没有覆盖编写静态方法。有关详细说明,请参见here。重复:不能以纯静态的方式实现所需的输出,而是围绕A类扩展B类。故事的结尾。

正如已经说过的那样:从概念上讲,这也是错误的。由于存在这些限制,因此 static 仅应在Java中谨慎使用。只需使用您现在拥有的非静态代码即可。

不幸的是,您的问题还不清楚您打算测试到底是什么,因此我对此无能为力。