gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:44 24 4
gpt4 key购买 nike

我有以下两个类(class):

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详细解释原因。重复:所需的输出无法以纯静态方式实现,围绕类 A 扩展类 B 构建。故事结束。

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

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

关于java - powermock可以用来测试静态方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53772186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com