Как проверить класс сервлета с помощью mockito - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь провести некоторые модульные тесты (я изучаю тему) для старого проекта, однако я понятия не имею, как имитировать БД (я использую mockito) и протестировать doGetметод. (сейчас я в значительной степени просто могу тестировать методы и классы без подключения к БД)

Я уже пробовал многие методы, которые я нашел в интернете, например this

package com.javacodegeeks;

import java.sql.Connection;
import java.sql.Statement;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;

public class DBConnectionTest {

  @InjectMocks private DBConnection dbConnection;
  @Mock private Connection mockConnection;
  @Mock private Statement mockStatement;

  @Before
  public void setUp() {
    MockitoAnnotations.initMocks(this);
  }

  @Test
  public void testMockDBConnection() throws Exception {
    Mockito.when(mockConnection.createStatement()).thenReturn(mockStatement);
    Mockito.when(mockConnection.createStatement().executeUpdate(Mockito.any())).thenReturn(1);
    int value = dbConnection.executeQuery("");
    Assert.assertEquals(value, 1);
    Mockito.verify(mockConnection.createStatement(), Mockito.times(1));
  }
}

Но я просто не уверен, как изменить это, чтобы соответствовать моим потребностям. мой код выглядит так:

JavaConnectDB.java


import java.sql.Connection;
import java.sql.DriverManager;

public class JavaConnectDb {

public static Connection connectDbH() {
   try {
       Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.4:1521:ORCL18", "c##foo", "foo");

        } catch (Exception e) {
            System.err.println(e);
        }
        return conn;

    }

GetUsuario.java

/**
 * Servlet implementation class GetUsuario
 */
@WebServlet("/GetUsuario")
public class GetUsuario extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public GetUsuario() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
                getInfoCookies(request,response);
                Connection conn = g.co.hosp.JavaConnectDb.connectDbH();
                response.setContentType("text/html");
                PrintWriter out = response.getWriter();
                try{
                    String sql = "select * from usuario";
                    OraclePreparedStatement pst = (OraclePreparedStatement) conn.prepareStatement(sql);
                    OracleResultSet rs = (OracleResultSet) pst.executeQuery();
                    String outPutTable = "<table><thead><tr><th>ID</th><th>USUARIO_ID</th><th>NOMBRE</th><th>APELLIDO</th><th>USUARIO</th><th>ESPECIALIDAD_ID</th></tr></thead>";
                    while(rs.next()){
                        outPutTable += "<tr><td>"+rs.getString(1)+"</td>"+"<td>"+rs.getString(3)+"</td>"+"<td>"+rs.getString(4)+"</td>"+"<td>"+rs.getString(5)+"</td>"+"<td>"+rs.getString(6)+"</td>"+"<td>"+rs.getString(7)+"</td></tr>";
                    }
                    outPutTable+="</table>";
                    out.println(outPutTable);
                    conn.close();
                }catch(Exception e){
                    System.err.println(e);
                }finally{
                    out.close();
                }
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

        protected void getInfoCookies(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
            Cookie[] cookiesInf = request.getCookies();
            if(cookiesInf !=null){
                for(Cookie cookie : cookiesInf){
                    if(cookie.getName().equals("hosp")){
                        hosp = Integer.parseInt(cookie.getValue());
                    }
                }
            }
        }
}

Я хочузапустить юнит-тест на doGet, но я просто не уверен, что делать ...

...