2011-02-04 3 views
0

hi J'ai une classe, et dans cette classe j'ai une méthode comme suit: J'utilise java.numéro de cas de test

public class ABC{ 
    some code here... 
    .................. 
    PreparedStatement pre; 
     public void insertUser(String firstName,String lastName){ 
      pre.setString(1,firstName); 
      pre.setString(2,lastName); 
      pre.execute(); 
     } 
} 

pour la méthode ci-dessus, je veux écrire le scénario de test, j'ai créé la classe de test comme suit:

public class ABCTest{ 
    ABC abc=new ABC(); 
    public void testInsertUser(){ 

maintenant ici, je veux écrire l'instruction assert, je veux tester si insert est réussi, Je veux tester la variable de méthode en utilisant assert(). S'il vous plaît dites-moi comment écrire un cas de test pour cela dans Java.

+0

Notez que vous ne voulez probablement pas que vos tests unitaires s'affirment. Au lieu de cela, vous voulez probablement renvoyer un 'boolean', afin que votre framework de test puisse collecter les résultats de plusieurs tests. –

+0

À droite lorsque vous posiez votre question, il y avait cette boîte pratique ** Comment formater **. Cela vaut la peine d'être lu, tout comme [la page liée] (http://stackoverflow.com/editing-help) à partir du ** [?] ** juste au-dessus de la zone de question. Plus vous mettrez d'efforts dans votre question, meilleure sera la qualité et la quantité de réponses que vous recevrez. Si ** aucune ** de vos 11 autres questions a vraiment reçu une réponse acceptable, avec respect, cela indique un problème de qualité des questions. La communauté StackOverflow est plus utile que cela. –

+0

Vous avez posé la même question http://stackoverflow.com/questions/4895645/help-writing-junit-for-jdbc/4896904#4896904. Évitez de poser des questions en double si vous le souhaitez, vous pouvez modifier votre question pour ajouter plus de données. – Pushkar

Répondre

0

voulez-vous dire quelque chose comme:

public void testInsertUser(){ 
ABC.insertUser(User.firstname, user.lastname); 
Statement stmt = conn.createStatement(); 
ResultSet rs = stmt.executeQuery("SELECT firstname_Colname, lastname_Colname FROM Your_Table"); 
boolean found = false; 
while (rs.next()) 
{ 
    found = ((User.firstname = rs.getString("firstname_Colname")) and (User.lastname = rs.getString("lastname_Colname"))); 
    if (found) 
    { 
    break; 
    }  
} 
assertEquals('test failed!', true, found); 
} 

si oui vous testez en fait le PreparedStatement qui ne marche pas de sens pour moi!

1

Vous devez faire quelque chose de ce genre:

  1. Vérifiez le nombre de lignes avant et après l'insertion et affirmer que le nombre après est un plus grand que le nombre avant.
  2. Effectuez un SELECT et vérifiez si votre ligne est entrée dans la base de données.
  3. Vérifiez le nombre de lignes affectées renvoyées par l'appel et vérifiez qu'elles sont égales à un.
1

probablement vous avez avec vos « insertUser » méthode d'autres méthodes comme méthode « selectUser » et « removeUser » donc dans votre TESTCASE vous devez utiliser « selectUser » pour être sûr que votre utilisateur apparaissent dans DB, également dans le fin vous devriez appeler 'removeUser' car après les tests vous devriez garder vos données propres comme avant (pour que les tests puissent être exécutés plusieurs fois sur les mêmes données de test avec les mêmes résultats).