java - 使用 Mockito 模拟类的成员变量

标签 java mocking mockito

我是开发新手,尤其是单元测试新手。 我想我的要求很简单,但我很想知道其他人对此的想法。

假设我有两个这样的类(class) -

public class First {

    Second second ;

    public First(){
        second = new Second();
    }

    public String doSecond(){
        return second.doSecond();
    }
}

class Second {

    public String doSecond(){
        return "Do Something";
    }
}

假设我正在编写单元测试来测试 First.doSecond() 方法。但是,假设我想像这样模拟 Second.doSecond() 类。我正在使用 Mockito 来做到这一点。

public void testFirst(){
    Second sec = mock(Second.class);
    when(sec.doSecond()).thenReturn("Stubbed Second");

    First first = new First();
    assertEquals("Stubbed Second", first.doSecond());
}

我看到模拟没有生效并且断言失败。 有没有办法模拟我要测试的类的成员变量。 ?

最佳答案

您需要提供一种访问成员变量的方法,以便您可以传入模拟(最常见的方法是设置方法或带参数的构造函数)。

如果您的代码未提供执行此操作的方法,则它被错误地考虑为 TDD(测试驱动开发)。

关于java - 使用 Mockito 模拟类的成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8995540/

相关文章:

java - csv 文件的格式问题

java - PreparedStatement IN 子句替代方案?

jquery - Ember.js 无法使用 jquery-mockjax 模拟 ajax

ruby-on-rails - Rspec: Controller 中的 stub 方法

generics - 为什么在mockito 2中使用 "doAnswer"时getArgument()不会隐式转换?

scala - 使用 Guice 和 MockitoSugar 模拟返回 Cats EitherT 的服务

java - 从 Java 配置文件中读取配置参数的最佳方法是什么?

java - 仅当传递给定类的任何*非空*对象时才返回值的模拟方法

java - 模拟 isAssignableFrom()

java - Android:java.lang.RuntimeException:在 android.app.ActivityThread.installProvider