java - 如何使用mockito来模拟另一个类中的类方法

标签 java unit-testing methods junit mockito

我正在尝试使用 JUnit 和 Mockito 来模拟端到端方法(addSomething 方法)。很明显,在该方法中我使用了其他方法。 我的疑问是:

  • 要模拟端到端方法,我还需要模拟其他方法,对吗?
  • 如何模拟 addSomething 方法中的方法?

我想要的一个简单例子是:

方法A

public int summing(int sum){
 int A = 5;
 int B = 23;

 sum = SumOfIntegers(A,B);
 return sum;
}

方法B

private int SumOfIntegers(int number1, int number2){

try{
    result = number1 + number2;
 }catch (Exception e) {
        e.printStackTrace();
 }
return result;
}

由于类的方法 A 正在调用私有(private)方法,因此如何模拟它?

最佳答案

单元测试验证单元的公共(public)可观察行为,即返回值以及与其依赖项的通信

<小时/>

您的情况的问题是存在对 ServerProxy 的隐藏依赖关系。 您不应该在该方法中实例化它,根本不应该在该类中实例化它......

如果您严格遵循关注点分离/单一责任模式,则依赖项的实例化是其自身的责任,不应由使用依赖项的对象来完成。

总之,您应该通过依赖注入(inject)ServerProxy对象注入(inject)到您的测试单元中,最好作为构造函数参数,最有可能使用DI 框架。在这种情况下,用可以为测试配置的模拟替换 ServerProxy 很简单。

关于java - 如何使用mockito来模拟另一个类中的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46079478/

相关文章:

AngularJS - 单元测试 - 使用同一服务的模拟中的原始服务?

c# - 类方法 : should I always check variables before accessing them?

python - 如何正确运行类中方法内的方法(python)

java - 从 main 隐式调用类中的方法

java - Mockito 单元测试 RestTemplate

java - 扩展对象并继承所有变量

Java 根据文件检查名称

java.net.绑定(bind)异常 : Address already in use: JVM_Bind <null>:80

java - Mockito:在 void 方法上填充不同的值

Java Do While 循环跳过条件