模拟类对象作为函数的参数

时间:2018-08-20 20:11:40

标签: unit-testing junit mockito junit4 powermockito

我正在使用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是否设置成功

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以使用类似的内容:

@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

}

但是,如果您的字段是私有的,则无法正确测试。如果要对此字段进行断言,则应为此字段提供一个吸气剂。

但是请记住,MyClass的内部表示形式不应进行测试,而应仅对其行为进行测试,因此也许您想尝试其他方法

相关问题