2013-05-07 40 views
0

有沒有一種方法可以測試不使用Mockito不返回任何值的方法? 這是示例方法。我是單元測試新手。在沒有嘲笑的java中的void方法中進行適當的單元測試

public void addMantisData(ArrayList<Mantis> list) { 

    try { 
     connection = dataSource.getConnection(); 

     PreparedStatement preparedStatement = connection 
       .prepareStatement("INSERT INTO mantises (ticketId, startDate, endDate, hours, minutes, " + 
         "employeeId, timeIn, timeOut, dateSubmitted, category, status, timestamp) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())"); 

     for (Mantis mantis : list) { 
      preparedStatement.setInt(1, mantis.getTicketId()); 
      preparedStatement.setString(2, mantis.getStartDate()); 
      preparedStatement.setString(3, mantis.getEndDate()); 
      preparedStatement.setInt(4, mantis.getHours()); 
      preparedStatement.setInt(5, mantis.getMinutes()); 
      preparedStatement.setInt(6, mantis.getEmployeeId()); 
      preparedStatement.setString(7, mantis.getStartTime()); 
      preparedStatement.setString(8, mantis.getEndTime()); 
      preparedStatement.setString(9, mantis.getDateSubmitted()); 
      preparedStatement.setString(10, mantis.getCategory()); 
      preparedStatement.setString(11, mantis.getStatus()); 
      preparedStatement.addBatch(); 
     } 

     preparedStatement.executeBatch(); 
     preparedStatement.close(); 

    } catch (SQLException e) { 

    } finally { 
     if (connection != null) { 
      try { 
       connection.close(); 
      } catch (SQLException e) { 

      } 
     } 
    } 
} 

我apprieciate幫助:)

+1

你想要測試什麼?如果這是查詢的構建,那麼你可以考慮把它帶到一個單獨的方法並測試它。 – Avi 2013-05-07 07:07:52

回答

3

這看起來更像是一個集成測試,然後是一個純粹的單元測試。此外,我不知道你想測試什麼,如果是查詢,你需要執行插入,然後嘗試從DB和assert獲得預期值並獲得預期結果。確保您使用自己的數據庫實例,並在測試後回滾。 DBUnit會讓你感到這件事,檢查出來

+0

我明白了。所以如果我繼續測試這個方法,它更像是一個集成測試,而不僅僅是一個單元測試。 我目前有一些excerise來提高我的軟件測試技能。我現在正在開發的測試是爲TAD開發人員準備實際項目。 非常感謝你:) – user2357236 2013-05-07 07:23:58

2

如果你不希望使用任何「模擬」或「間諜」類(手工製作或從的Mockito),你可以考慮一個「廉價」數據庫駐留在內存中(或由臨時文件支持)。然後,您的代碼可以像真實一樣通過JDBC發出查詢,並且您的單元測試可以準備數據並檢查結果(也通過JDBC)。請務必閱讀answers for this similar question