java - 超类中的模拟最终方法
问题描述
我正在创建一个扩展AbstractScheduledService的新服务“MyService”, MyService 从它继承了最终方法isRunning()。
public class MyService extends AbstractScheduledService {}
我还对“MyService”进行了健康检查,它调用isRunning()来查看“MyService”是否健康。
public class MyServiceHealthcheck {
MyService myService;
@Inject
public MyServiceHealthCheck(MyService myService) {
this.myService = myService;
}
public boolean isHealthy() {
return myService.isRunning();
}
}
最后,我正在尝试创建单元测试“MyServiceHealthcheckTest”来测试 MyServiceHealthcheck
public class MyServiceHealthcheckTest {
@Mock MyService myService;
}
模拟已正确初始化,我能够获得 MyService 中定义的方法的预期值,但myService.isRunning()始终返回 NullPointerException。模拟isRunning()方法的最佳方法是什么?
解决方案
您需要配置 Mockito 以便可以模拟最终类和方法。为此,您需要添加一个名为的文本文件org.mockito.plugins.MockMaker
到您的项目src/test/resources/mockito-extensions
目录中。它应该包括一行文本,如下所示:mock-maker-inline
.
推荐阅读
- php - Wordpress - 将 div 添加到 index.php 文件
- angular - 连接贝宝帐户以获取访问令牌时的错误请求
- powerbi - Power BI 网格未显示在右侧
- python - Python 类型行然后循环它们直到行不在 txt 文件中
- c++ - 谁能解释一下这是如何产生一包一和零的?
- scala - Extension vs infix trait methods for Dotty Type Classes
- netlogo - Ask turtles to change colour when they go through a certain patch Netlogo
- javascript - Is there a way to parse out the computer name
- ios - Date range with correct TimeZone in Swift
- r - How Can I create a graph using this samples?