【问题标题】:Mock class object as parameter of function模拟类对象作为函数的参数
【发布时间】:2018-08-20 20:11:40
【问题描述】:

我正在使用 junit 和 mokito 编写我的 java 程序的单元测试。

public MyClass {
    private ClassA a;
    public void process(ClassB b) {
        if(b.method()) a = ClassA.builder().build();

    }
}

现在我已经写了一个 MockClassA 和 MockClassB。但我不知道该怎么做:

  1. 将 MockClassB 实例传递给处理函数

  2. 如何验证私有变量a是否设置成功

有人可以帮忙吗?

【问题讨论】:

    标签: unit-testing junit mockito junit4 powermockito


    【解决方案1】:

    你可以使用类似的东西:

    @Test
    public void shouldDoSomething() {
        // given
        ClassB mock = Mockito.mock(ClassB.class);
        Mockito.when(mock.method()).thenReturn(true);
        MyClass classUnderTest = new MyClass();
    
        // when
        classUnderTest.process(mock);
    
        // then
        // Insert assertions
    
    }
    

    但是,如果您的字段是私有的,您将无法对其进行正确测试。如果你想对它做一些断言,你应该为这个字段提供一个 getter。

    但请记住,不应该测试 MyClass 的内部表示,只测试它的行为,所以也许你想尝试不同的方法

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 2020-12-04
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多