繁体   English   中英

如何 JUnit 方法是 static 并返回 void

[英]How to JUnit for method which is static and returns void

如何为以下方法编写 JUnit?

public static void invokeAuditService(HttpServletRequest request, Date serviceCallTime, String response, 
            String activityKey, JSONObject detailsReplaceVal, String pmAccountId){
        AuditLogUtils.invokeAuditService(request, serviceCallTime, response, activityKey, detailsReplaceVal,  pmAccountId);
}

我的代码:

@Test
public void testInvokeAuditService() {
    PowerMockito.doNothing().when(WidgetHelper.class);
    WidgetHelper.invokeAuditService(Matchers.anyObject(), Matchers.anyObject(), Matchers.anyObject(), 
            Matchers.anyObject(), Matchers.anyObject(), Matchers.anyObject());
}

I am getting compiler error: The method invokeAuditService(HttpServletRequest, Date, String, String, JSONObject, String) in the type WidgetHelper is not applicable for the arguments (Object, Object, Object, Object, Object, Object)

更新代码:

@Test
    public void testInvokeAuditService() {
        
        PowerMockito.doNothing().when(WidgetHelper.class);
        WidgetHelper.invokeAuditService(servletRequest, date, "abc", "xyz",json, 
                "123");
        
        verifyStatic(WidgetHelper.class, Mockito.times(1));
        WidgetHelper.invokeAuditService(servletRequest, date, "abc", "xyz",json, 
                "123");
    }

这表示:verifystatic 之后的行“实际上与这个模拟的交互为零”。

您在invokeAuditService方法参数中将所有值作为Object传递。 所以你得到这个编译器错误。

例如,您应该传递serviceCallTime, response, activityKey, detailsReplaceVal, pmAccountId的值

如果您没有所有参数的值,请将值作为null值发送,但null值应在invokeAuditService方法中处理以避免NullpointerException

更改如下代码

@Test
public void testInvokeAuditService() {
    PowerMockito.doNothing().when(WidgetHelper.class);
    WidgetHelper.invokeAuditService(null, null, null, null, null, null);    
}

现在您的编译器错误将得到解决,也许您将在运行时遇到NullpointerException

这有效:

@Test
    public void testInvokeAuditServiceWithSuccessFlagAndResponse() {
        
        PowerMockito.doNothing().when(WidgetHelper.class);
        WidgetHelper.invokeAuditService(servletRequest, date, "abc", json, 
                "123", "Y");
        
        verifyStatic(WidgetHelper.class, Mockito.times(1));
    }

我实际上是在要求 Mockito 在交互发生之前验证交互。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM