gpt4 book ai didi

java - 调用 stub 而不是原始方法

转载 作者:行者123 更新时间:2023-11-30 06:18:36 24 4
gpt4 key购买 nike

我应该测试一个设计相当于这样的项目:

public class A(){
public static void init() {
M.m();
//some code
}
}
public class M(){
public static void m() {
//some code
}
}

我需要单独测试class A()中的方法init()。因此,我必须为 M.m() 制作一个模拟或 stub ,其签名与原始签名相同。但不要修改这两个类中的任何内容,因为这是不允许的。在两种方法都是静态的情况下,如何使 init() 调用 stub 并忽略原始方法?

最佳答案

静态方法不能在没有反射的情况下被 stub 或模拟,因为它们与类定义强绑定(bind)。

如果实在无法更改代码,请使用 PowerMock,它提供了模拟静态方法的方法。
如果您可以更改代码,请将此方法设为实例方法,并提供一种在 A 类中设置 M 依赖项的方法。
所以你可以非常简单地 stub M.m()

关于java - 调用 stub 而不是原始方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48646499/

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