我想执行一个junit测试使用Mockito对toEntity函数。如何使用Mockito JUNIT一个java.util.Function
@Component
public class MyEntityTransform {
public Function<MyDTO , MyEntity> toEntity = new Function<MyDTO , MyEntity >() {
@Override
public MyEntity apply(MyDTO record) {
return new MyEntity();
}
};
}
不幸的是,toEntity是NULL当我嘲笑类,我不知道我怎样才能正确地进行测试。
@RunWith(MockitoJUnitRunner.class)
public class MyTest {
@InjectMocks
private MyService _classUnderTest;
@Mock
private MyEntityTransform myEntityTransform
@Before
public void setUp() {
Mockito.when(this.myEntityTransform.toEntity.apply(Mockito.anyObject())).thenReturn(...);
}
}
当我运行JUnit测试,给的Mockito我的错误:
显示java.lang.NullPointerException org.mockito.exceptions.misusing.InvalidUseOfMatchersException:这里检测 错位的参数匹配:
- >在com.example.MyTest.setUp(MyTest.java:38)
无法使用验证或ST的外参数匹配器ubbing。 正确使用参数匹配器的示例: when(mock.get(anyInt()))。thenReturn(null); doThrow(new RuntimeException())。when(mock).someVoidMethod(anyObject()); 验证(模拟).someMethod(包含(“富”))
而且,这个错误可能会显示出来,因为你使用参数的匹配与 方法不能被嘲笑。以下方法不能为 存根/验证:final/private/equals()/ hashCode()。不支持在非公共父类上声明的模拟方法 。
你有什么建议吗?
在这里绝对没有理由使用模拟。当测试使用B的A时,使用嘲讽来为A提供假B。嘲笑你正在测试的东西没有意义。 –
我不明白。如果你想测试'Function'为什么涉及到'Mockito'? –
对不起,我想在另一个测试中使用函数toEntity作为模拟。 –