模拟 class 对象作为函数的参数
Mock class object as parameter of function
我正在使用 junit 和 mokito 编写我的 java 程序的单元测试。
public MyClass {
private ClassA a;
public void process(ClassB b) {
if(b.method()) a = ClassA.builder().build();
}
}
现在我已经写好了MockClassA和MockClassB。但我不知道如何:
将 MockClassB 实例化传递给处理函数
如何验证私有变量a是否设置成功
有人可以帮忙吗?
您可以使用类似的东西:
@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
的内部表示,而应测试它的行为,因此也许您想尝试不同的方法
我正在使用 junit 和 mokito 编写我的 java 程序的单元测试。
public MyClass {
private ClassA a;
public void process(ClassB b) {
if(b.method()) a = ClassA.builder().build();
}
}
现在我已经写好了MockClassA和MockClassB。但我不知道如何:
将 MockClassB 实例化传递给处理函数
如何验证私有变量a是否设置成功
有人可以帮忙吗?
您可以使用类似的东西:
@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
的内部表示,而应测试它的行为,因此也许您想尝试不同的方法