2012-12-12 3 views
0

Mon professeur nous a fourni le cas de test JUnit pour la classe OrderManager et j'ai fait ma classe OrderManager mais mon code échoue 3 des 4 tests qu'elle a fournis. Je vais coller le code de ma classe, le test JUnit fourni ainsi que ce que le test JUnit montre sont les erreurs.Ecriture du code pour correspondre aux exigences du test unitaire

Voici ma classe de gestionnaire de commande:

import java.text.DecimalFormat; 
import java.util.ArrayList; 

public class OrderManager implements OrderManagerInterface 
{ 

    private double order; 
    private int numberOfOrders; 
    DecimalFormat format = new DecimalFormat("##.00"); 

    Sorting sortingClass = new Sorting(); 
    //create an array list of type employee 
    ArrayList<Comparable> orderList = new ArrayList<Comparable>(); 

    /** 
    * Initialize the numWorkers, numManager, numHourlyWorker, numThrowers to 0. 
    * @param 
    */ 
    public OrderManager() 
    { 


    } 
    public double addOrder(String toLn, String toFn, String toStr, String toC, String toSt, int toZ, 
       String fromLn, String fromFn, String fromStr, String fromC, String fromSt, int fromZ, 
       boolean beforeN, String d, int ship, int bSize, String msg) 
     { 
     Order newOrder = new Order(toLn, toFn, toStr, toC, toSt, toZ, fromLn, fromFn, fromStr, fromC, fromSt, fromZ, 
       beforeN, d, ship, bSize, msg); 

     orderList.add(newOrder); 





return order; 

    } 

    @Override 
    public String printMessageCards() { 
     String message = ""; 
     for (Comparable element:orderList) 
     { 
      message += ((Order) element).getMsg()+"\n"+"\n"; 
     } 
     return message; 
    } 
    @Override 
    public String deliverySchedule() { 
     // TODO Auto-generated method stub 
     System.out.println(orderList.toString()); 
     orderList = sortingClass.selectionSort(orderList); 
     System.out.println(orderList.toString()); 

     String message = "Delivery Schedule"+"\n"+"\n"; 

     for (Comparable element:orderList) 
     { 
      String deliveryTime = ""; 
      if(((Order) element).getBeforeN()==true) 
      { 
       deliveryTime = "(a before noon delivery, preceeded by *)"; 
      } 
      else if (((Order) element).getBeforeN()==false) 
      { 
       deliveryTime = "(an after noon delivery)"; 
      } 
      message += ((Order) element).getDelivery()+"\n"+((Order) element).getToSt()+", "+((Order) element).getToC()+" - "+((Order) element).getToLn()+", "+((Order) element).getToFn()+" "+deliveryTime+"\n"; 
     } 

     return message; 
    } 
    /** 
    * getNumOrders which is responsible for the size of the list 
    * @return numberOfOrders 
    */ 
    @Override 
    public int getNumOrders() { 
     // TODO Auto-generated method stub 
     numberOfOrders = orderList.size(); 
     return numberOfOrders; 

    } 
    /** 
    * Method toString 
    * @return the String representation 
    */ 
    public String toString() 
    { 

     return orderList.toString(); 
    } 
} 

Voici tester le JUnit notre professeur a fourni

import static org.junit.Assert.*; 

import java.util.Scanner; 

import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 


public class OrderManagerTest { 
    OrderManager orders1, order2; 

    @Before 
    public void setUp() throws Exception { 
     orders1 = new OrderManager(); 
     orders1.addOrder("Brown", "Angela", "55321 Sycamore St.", "Gaithersburg", 
       "MD", 20879, "Smith", "Agnus", "344 Oak St.", "Pocatello", 
       "ID", 83205, true, "May 9", 1, 2, "Happy Mother's Day"); 
     orders1.addOrder("Miller", "Karen", "3399 Campus St.", "Rockville", 
       "MD", 20850, "Jones", "Peggy", "5633 Meadow Way", "Bloomington", 
       "IN", 47404, false, "May 8", 1, 1, "Love ya"); 
     orders1.addOrder("Hanson", "Beverly", "3356 Cypress Ln.", "North Potomac", 
       "MD", 20878, "Hanson", "Ken", "2985 Pointer Dr.", "Fountain Valley", 
       "CA", 83205, false, "May 11", 2, 3, "You're the greatest"); 
     orders1.addOrder("White", "Carolyn", "4488 Pinewood Ave.", "Olney", 
       "MD", 20859, "Green", "George", "492 Apple Way", "St. Louis", 
       "MO", 35587, false, "May 9", 1, 2, "All the Best!"); 
    } 

    @After 
    public void tearDown() throws Exception { 
     orders1 = null; 
    } 

    @Test 
    public void testPrintMessageCards() { 
     String result = orders1.printMessageCards(); 
     Scanner scan = new Scanner(result); 
     assertEquals("Dear Mom", scan.nextLine()); 
     assertEquals("Love ya", scan.nextLine()); 
     assertEquals("Love Peggy", scan.nextLine()); 
     scan.nextLine(); // blank line 
     scan.nextLine(); // blank line 
     assertEquals("Dear Mom", scan.nextLine()); 
     assertEquals("Happy Mother's Day", scan.nextLine()); 
     assertEquals("Love Agnus", scan.nextLine()); 
     scan.nextLine(); // blank line 
     scan.nextLine(); // blank line 
     assertEquals("Dear Mom", scan.nextLine()); 
     assertEquals("All the Best!", scan.nextLine()); 
     assertEquals("Love George", scan.nextLine()); 
    } 

    @Test 
    public void testAddOrder() { 
     assertEquals(4,orders1.getNumOrders()); 
     orders1.addOrder("Myers", "Stephanie", "8355 Grove Ave.", "Darnestown", 
       "MD", 20874, "Simco", "Rebecca", "34 Charleston St.", "Orlando", 
       "FL", 11334, true, "May 8", 1, 1, "I miss you"); 
     assertEquals(5,orders1.getNumOrders()); 

    } 

    @Test 
    public void testDeliverySchedule() { 
     String result = orders1.deliverySchedule(); 
     Scanner scan = new Scanner(result); 
     assertEquals("Delivery Schedule", scan.nextLine()); 
     scan.nextLine(); // blank line 
     scan.nextLine(); // blank line 
     assertEquals("May 8", scan.nextLine()); 
     assertEquals("3399", scan.next()); 
     scan.nextLine(); // get rest of line 
     scan.nextLine(); // blank line 
     scan.nextLine(); // blank line 
     assertEquals("May 9", scan.nextLine()); 
     assertEquals("*55321", scan.next()); 
     scan.nextLine(); // get rest of line 
     assertEquals("4488", scan.next()); 

    } 

    @Test 
    public void testSortClass() { 
     String result = orders1.printMessageCards(); 
     Scanner scan = new Scanner(result); 
     assertEquals("Dear Mom", scan.nextLine()); 
     assertEquals("Love ya", scan.nextLine()); 
     assertEquals("Love Peggy", scan.nextLine()); 

     // add a May 8 before noon order which should be 
     // sorted to be first before Peggy 

     orders1.addOrder("Myers", "Stephanie", "8355 Grove Ave.", "Darnestown", 
       "MD", 20874, "Simco", "Rebecca", "34 Charleston St.", "Orlando", 
       "FL", 11334, true, "May 8", 1, 1, "I miss you"); 

     result = orders1.printMessageCards(); 
     scan = new Scanner(result); 
     assertEquals("Dear Mom", scan.nextLine()); 
     assertEquals("I miss you", scan.nextLine()); 
     assertEquals("Love Rebecca", scan.nextLine()); 
     scan.nextLine(); // blank line 
     scan.nextLine(); // blank line 
     assertEquals("Dear Mom", scan.nextLine()); 
     assertEquals("Love ya", scan.nextLine()); 
     assertEquals("Love Peggy", scan.nextLine()); 
    } 

} 
  • Le test échoue testPrintMessageCards avec:

    expected: <[Dear Mom]> but was:<Happy Mother's Day]>

  • Le test testDeliverySchedule échoue avec

    expected: <M[ay 8]> but was: M[D, North Potomac - Hanson, Beverly(an after noon delivery)]>

  • Le test testSortClass échoue avec:

    expected: <[Dear Mom]> but was:<Happy Mother's Day]>

Quelqu'un peut-il donner le bon code que je dois fixer dans ma OrderManager classe ?

+2

Qu'est-ce que * vous * avez essayé de résoudre le problème? StackOverflow n'est pas un endroit pour poster vos devoirs et demander aux autres de faire le travail pour vous. Mais nous pouvons vous aider si vous êtes coincé en essayant de résoudre le problème * vous-même *. –

+0

Je sais que ce n'est pas correct, et je ne poste pas mon devoir, c'est ce que j'ai fait moi-même et j'ai essayé de comprendre quel était le problème. Affectation affectation est juste quand vous donnez quelque chose à faire à quelqu'un sans rien faire, j'ai fait tout cela, j'ai juste eu du mal à comprendre ce qui n'allait pas avec le test d'unité j. – user1873746

Répondre

1

Le test testPrintMessageCards échoue avec: expected: <[Dear Mom]> but was: <Happy Mother's Day]>

Comme je le vois, le test indique que vous avez besoin des lignes suivantes dans vos cartes de vœux:

Dear Mom, 
<Text> 
Love <Name> 

Aussi les printMessageCards doit trier les cartes selon la date de livraison, c'est pourquoi la deuxième carte (de Peggy) doit être imprimée en premier. Vraiment, il suffit de regarder le test et de retravailler votre code jusqu'à ce que tous les tests soient passés. Essayez par vous-même, si vous rencontrez des problèmes, posez une question spécifique à ce problème. Cela ne va pas vous aider à long terme, si quelqu'un fait vos devoirs pour vous.

+0

Ah, ok je vais essayer de résoudre le problème. Merci pour votre conseil.Encore une fois, je ne fais pas faire mes devoirs à quelqu'un, j'ai déjà fait la plupart du temps, j'ai eu du mal à comprendre ce qui n'allait pas avec mon code selon le J Unit Test. – user1873746

+0

C'est parfaitement bien, et les gens ici vous aideront à trouver votre problème. Je pense que le meilleur test pour avoir une idée de ce qui est nécessaire est le dernier testSortClass. Dès que vous obtenez celui en cours d'exécution, les deux autres tests qui échouent devraient fonctionner aussi bien. – pushy

+0

Je n'arrive toujours pas à comprendre quelle partie du code ne fonctionne pas correctement. Je n'ai moi-même aucune idée de ce que je fais ou de ce que je fais qui ne correspond pas correctement à l'affaire JUnit. – user1873746

0

Si vous insérez \ n après une chaîne comme dans:

message += ((Order) element).getMsg()+"\n"+"\n"; 

et dans d'autres endroits ici, vous avez une \ n comme la fin de la ligne, et l'autre comme une ligne vide. Donc, vous avez un ligne vide, pas deux.

+0

ok Merci pour votre conseil, je vais voir ce que je peux faire. – user1873746

+0

Alors, que dois-je faire, comme sur comment dois-je insérer une ligne vide dans ce code parce que j'ai essayé de mettre un autre "\ n" dans la ligne et cela ne fonctionnerait toujours pas? – user1873746

+0

Essayez de ne pas comparer ligne après ligne, mais un texte entier par rapport à un texte entier. Donc, vous verrez combien de lignes vous avez, qu'est-ce que vous avez là et ainsi de suite. – Gangnus

Questions connexes