Тест JUnit все еще проходит, хотя sql-запрос не должен возвращать никаких записей - PullRequest
0 голосов
/ 17 октября 2018

Я пишу тесты на огурец, которые запрашивают базу данных SQL Server.

Приведенный ниже запрос должен завершиться неудачей, так как запись не существует в таблице.Но тест проходит.

try { 
        Class.forName(JDBC_DRIVER); 
        System.out.println("Connecting to database..."); 
        conn = DriverManager.getConnection(DB_URL,USER,PASS);  

        System.out.println("Connected database successfully..."); 
        stmt = conn.createStatement(); 
        String sql = "SELECT id FROM tclientlink WHERE id = '0000060115123'"; 
        ResultSet rs = stmt.executeQuery(sql);

        while(rs.next()) { 
            int id  = rs.getInt("goald_client_id"); 
            System.out.print("ID IS HERE: " + id); 
            assertEquals(60115, id);
        } 
        rs.close(); 
    } catch(SQLException se) { 
        se.printStackTrace(); 
    } catch(Exception e) { 
        e.printStackTrace(); 
    } finally { 
        try { 
            if(stmt!=null) stmt.close();  
        } catch(SQLException se2) { 
        }
        try { 
            if(conn!=null) conn.close(); 
        } catch(SQLException se) { 
            se.printStackTrace(); 
        }
    }
    System.out.println("Goodbye!"); 
} 

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Ваш цикл while не выполняется, поскольку в наборе результатов нет записей, и по умолчанию тестовый набор пройден. Выполните следующие изменения

while(rs.next()) { 
    int id  = rs.getInt("goald_client_id"); 
    System.out.print("ID IS HERE: " + id); 
    assertEquals(60115, id);
} 

Измените приведенный выше код с помощью

int noOfRecords = 0;

while(rs.next()) { 
    int id  = rs.getInt("goald_client_id"); 
    System.out.print("ID IS HERE: " + id); 
    assertEquals(60115, id);
    noOfRecords ++;
} 

if( noOfRecords == 0 ) {
    assertEquals(true, false);
}
0 голосов
/ 17 октября 2018

у вас есть NullPointerException в следующей строке:

int id  = rs.getInt("goald_client_id"); 

и он переходит к блоку исключений, просто добавьте следующий оператор во все блоки исключений

assertEquals(true, false);
...