java - Mockito 可以使用参数构造函数初始化模拟对象吗?

标签 java unit-testing mocking jmockit

当我将 @Mocked 注解放在一个只有带参数的构造函数的对象上时,该对象会正确启动吗?

最佳答案

When I put the @Mocked annotation on a object which has only constructor with parameters, will this object be initiated rightly?

没有。

将创建具有相同界面模拟。这意味着它将具有相同的 public 方法,并且如果测试类位于同一个包中,它也将具有相同的 protectedpackage private方法可访问。

此模拟将不会调用模拟类的真实方法(除非您如此配置)。

这意味着,对于预计由您的测试代码调用的每个方法(剪切)并且定义了返回值,您必须配置您的模拟,以便返回您的值cut 应在该特定测试中使用。

这种可配置的返回值和模拟的验证功能是我们使用模拟框架的原因。

<小时/>

注意

如果您想模拟对访问由模拟类构造函数初始化的成员的方法的调用,您必须使用以下形式

doReturn(SOME_VALUE).when(mock).methodToBeCalledByYourCut();

因为形式

 when(mock.methodToBeCalledByYourCut()).thenReturn(SOME_VALUE);

在这种特殊情况下将引发 NullPointerException

关于java - Mockito 可以使用参数构造函数初始化模拟对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41733199/

相关文章:

java - 用 if 语句指向程序中的特定行? java

unit-testing - 我如何在Dart中的then语句中进行测试

java - 使用参数化引用类型参数模拟 Spring RestTemplate.exchange 调用

javascript - angularjs:如何在单元测试中模拟 $rootScope

ruby-on-rails - 未定义的方法 `receive_message_chain'

java - 由 : org. postgresql.util.PSQLException 引起:致命:用户 "admin"的密码验证失败

java - 轮询时 session 超时

java从对象列表中获取子列表

javascript - 在函数内模拟函数并以 Jest 的方式获取调用计数

PHPUnit 模型问题