2016-12-01 4 views
0

У меня есть метод. Какова наилучшая практика модульного тестирования? Вы можете сделать mock Connection и ResultSet и передать как параметр метода как объект, но я нахожу это глупым, непрофессиональным решением.Единичные тесты для одного основного метода

public static void playA() { 
    MyObject object = check("cat"); 
    // some stuff... 
} 

private static MyObject check(String s) throws SQLException { 
    // some stuff checking string 
    MyObject o = methodA(s); 
    // some stuff doing on the object 
    return o; 
} 

private static MyObject methodA(String s) throws SQLException { 
    Connection c = MySettings.getConnection(); 
    PreparedStatement ps = c.prepareStatement("select * from Objects where type = ?"); 
    ps.setString(1, s); 
    ResultSet resultSet = ps.executeQuery(); 
    while (resultSet.next()) { 
     // mapping 
     return object; 
    } 
    return null; 
} 

ответ

1

Я считаю, что он должен соответствовать уровню абстракции, который вы хотите проверить. Mocking Connection и ResultSet могут быть точными, если вы хотите, например, проверить логику своего SQL.

Если вы хотите, чтобы быть точным тестируют слой подключения к базе данных вы можете использовать инструменты для баз данных модульного тестирования как http://dbunit.sourceforge.net/

Также попробуйте иметь свой код, как наиболее объектно-ориентированный, как это возможно. что поможет вам в тестировании (хотя я знаю, что это, вероятно, просто пример)

Смежные вопросы