java - 单元测试,怎么测试?想要但未在 Mockito.verify 上调用
问题描述
我有带有构造函数和方法的GatewayServer.class :
public class GatewayServer {
private ResourceConfig resourceConfig = null;
public GatewayServer(...) {
...
resourceConfig = new ResourceConfig();
...
}
public void registerController(Class<?> controller) {
resourceConfig.register(controller);
}
我有GatewayServerTest.class我想测试是否register()
在 resourceConfig 上调用了方法,但我不知道如何添加模拟new ResourceConfig()
:
@RunWith(MockitoJUnitRunner.class)
public class GatewayServerTest {
@InjectMocks
GatewayServer gatewayServer;
@Mock
ResourceConfig resourceConfig;
@Before
public void setup() {
gatewayServer = new GatewayServer(...);
}
@Test
public void registerControllerTest() {
gatewayServer.registerController(Endpoint.class);
Mockito.verify(resourceConfig, Mockito.atLeastOnce()).register(Mockito.any());
}
}
解决方案
使用 Mockito 是不可能的,但您可以使用 PowerMock 来模拟构造函数本身。
另一种解决方案是Resource config
不在构造函数中初始化,而是在原地初始化(如果您没有任何后初始化):
private ResourceConfig resourceConfig = new ResourceConfig();
在这种情况下,可以使用 Mockito 进行模拟(就像您在测试课程中所做的那样)。
推荐阅读
- java - 迭代时将项目添加到列表中的特定索引中
- jquery - 单击按钮时增加和减少图像宽度
- php - Angular 应用程序中的 CORS 问题
- ssl-certificate - 如何从 gcloud 设置 SSL 证书?
- python-3.x - 无法在 Pycharm 中访问 Python 中的环境变量
- json - 如何在 servlet 中读取 json 值?
- python - 如何使用python绘制多个子图
- swift - 如何通知一个目标的获取结果控制器另一个目标的托管对象上下文中发生的更改?
- c# - 是否可以在 HTML 帮助器方法中确定 ASP.NET Core 托管环境?
- php - 如何从单选按钮中一一提交选择的答案