java - Mockito:如何对 java mockito void 方法进行单元测试?

标签 java mockito junit5

我有以下代码想要进行单元测试:

public class TransformarExcel
{

public TransformarExcel() {
    //Constructor
}
  public void validarEntero(HttpServletRequest request, HttpServletResponse response, Integer rowCount, String column, String value)
  {
    if (value.equals("0")) {
      generateErrorProcessingFile(request, response, ALERTDANGER, MSGCOLUMNA + column + MSGREGISTRO + rowCount + " no puede ser vacío.");
    }
  }

  public void generateErrorProcessingFile(HttpServletRequest request, HttpServletResponse response, String typeError, String messageError)
  {
      request.setAttribute("typeMessage", typeError);
      request.setAttribute("message", messageError);
      try {
          request.getRequestDispatcher("index.jsp").forward(request, response);
      } catch (ServletException|IOException ex) {
          Logger.getLogger(ServletTransformarExcelDesembolso.class.getName()).log(Level.SEVERE, null, ex);
      }
  }

我需要验证方法 validarEntero 或方法generateErrorProcessingFile 是否已执行,因为这两种方法都不返回任何内容。

这是我做的:

@Test
final void testValidarEntero() throws IOException {

        ServletTransformarExcelDesembolso manager = Mockito.mock(ServletTransformarExcelDesembolso.class);
        ServletTransformarExcelDesembolso dato = new ServletTransformarExcelDesembolso(); 
        dato.validarEntero(null, null, null, null, "0");
        verify(manager, Mockito.timeout(1)).validarEntero(null, null, null, null, "0");} 

谢谢你:)。

最佳答案

您可以使用mockspy对象来验证预期的行为。

@Test
final void testValidarEntero() throws IOException {

    HttpServletRequest mockRequest = Mockito.mock(HttpServletRequest.class);
    Mockito.when(mockRequest.getRequestDispatcher(anyString())).thenReturn(Mockito.mock(RequestDispatcher.class));

    ServletTransformarExcelDesembolso dato = new ServletTransformarExcelDesembolso(); 
    dato.validarEntero(mockRequest, null, null, null, "0");

    verify(mockRequest, Mockito.times(1)).getRequestDispatcher("index.jsp");
}

关于java - Mockito:如何对 java mockito void 方法进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55681492/

相关文章:

java - PDF 页面的缩略图 (Java)

java - 使用ScalaTest测试包含@Autowired和私有(private)字段的java

java - 使用 mockito 和 junit 测试图像

junit - JUnit 消息的格式化

java - 将任何枚举传递给方法

java - 为什么减少循环次数并不能加快程序速度?

java - Mock系统背后的逻辑

java - 如何使用自定义@Rule正确配置@RunWith(Parameterized.class) + SpringClassRule + SpringMethodRule?

spring - 将 Spring bean 注入(inject) JUnit Jupiter 中的 ParameterResolver

java - Glassfish asadmin 启动域失败