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 中谨慎使用。只需使用您现在拥有的非静态代码即可。
不幸的是,您的问题并不清楚您到底想测试什么,因此我无法帮助您解决这部分问题。
我有以下两个类:
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 中谨慎使用。只需使用您现在拥有的非静态代码即可。
不幸的是,您的问题并不清楚您到底想测试什么,因此我无法帮助您解决这部分问题。