2017-07-24 7 views
0

: Ich bin zu schreiben junits.I mein unter java api haben, die für unter api.can jemand jedes Mal von database.It enthält nur eine einzige query.I schreiben müssen junit einen eindeutigen Wert bekommt gebe ein paar Vorschläge, wie soll ich angehen?JUnit-Testfall für meine api

public static int getUniqueDBCSequence() throws Exception 
    { 

     int w_seq = 0; 
     QueryData w_ps = null; 
     ResultSet w_rs = null; 

     try 
     { 
      w_ps = new QueryData("SELECT GETUNIQUENUMBER.NEXTVAL FROM DUAL"); 
      w_rs = SQLService.executeQuery(w_ps); 

      while (w_rs.next()) 
      { 
       w_seq = w_rs.getInt(1); 
      } 

     } 
     catch (Exception a_ex) 
     { 
      LOGGER.fatal("Error occured : " + a_ex.getMessage()); 
     } 
     finally 
     { 
      SQLService.closeResultSet(w_rs); 
     } 
     return w_seq; 
    } 

Antwort

0

Sie verwenden nur statische Methoden: in der Klasse unter Test, sondern auch in den Abhängigkeiten von ihm.
Es ist wirklich kein testbarer Code mit JUnit.

Außerdem, was Sie tun, Sie unitären zu testen?
Ihr Test hat keine inhaltliche Logik.

Sie könnten SQLService.executeQuery() eine Methodeninstanz machen, um es zu verspotten. Aber wirklich, welches Interesse, es zu verspotten?
Um zu bestätigen, dass das Ergebnis w_seq = w_rs.getInt(1); zurückgegeben wird?
Es scheint, dass technische Behauptungen, die wenig Wert haben, und Wartungstests mit wenig Wert vermieden werden sollten.

Nun könnte man mit DBUnit oder Tools testen eine In-Memory-Datenbank zu füllen und führt den Code gegen.
Aber die Abfrage ausgeführt haben eine starke Kopplung mit Oracle-Sequenzen.
Sie könnten also einige Schwierigkeiten haben, es zu tun.

Verwandte Themen