Java 使用mockito调用方法时,如何检查方法参数?
我正在尝试编写单元测试,它将测试Java 使用mockito调用方法时,如何检查方法参数?,java,unit-testing,junit,mockito,Java,Unit Testing,Junit,Mockito,我正在尝试编写单元测试,它将测试fillA方法。我需要验证doSmth调用时是否正确初始化了a字段。 下面是一个例子 SecondClass secondClass = new SecondClass(); public void execute() { A a = new A(); fillA(a); secondClass.doSmth(a); } private void fillA(A a) { a.setFirstField("first field"); a.
fillA
方法。我需要验证doSmth
调用时是否正确初始化了a
字段。
下面是一个例子
SecondClass secondClass = new SecondClass();
public void execute() {
A a = new A();
fillA(a);
secondClass.doSmth(a);
}
private void fillA(A a) {
a.setFirstField("first field");
a.setSecondField("second field");
}
class SecondClass {
public void doSmth(A a) {
// doSmth
}
}
class A {
private String firstField;
private String secondField;
// getters and setters
}
为了确保调用了
secondClass
,您应该使用
verify():检查使用给定参数调用的方法
可以使用灵活的参数匹配,例如通过
或者捕获在何处调用的参数
例如:
Mockito.verify(secondClass).doSmth(<arg>);
Mockito.verify(第二类).doSmth(
一个
这是您需要的测试的基本结构。您需要模拟您的
第二个类
实例,并将其注入到您的测试类中。我将您的外部类命名为Bar
此代码假定您在a
类上实现了.equals()
方法
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class BarTest {
@Test
public void testAIsCorrectlyInitialized() throws Exception {
SecondClass secondClass = mock(SecondClass.class);
Bar bar = new Bar();
bar.setSecondClass(secondClass);
A expected = new A();
// here, populate "expected" with correct values
bar.execute();
// Verify call (assumes A implements a proper equals)
verify(secondClass).doSmth(expected);
}
}