【问题标题】: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。但我不知道该怎么做:
将 MockClassB 实例传递给处理函数
如何验证私有变量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 的内部表示,只测试它的行为,所以也许你想尝试不同的方法