2009-12-22 12 views
0

Alors, je dois tester la couche de service pour une application (je dois tester certaines méthodes - ceci est mon premier contact avec la section d'essai)EasyMock: Qu'est-ce que je fais mal?

public void testGetAllOrderedDescByRating() { 

    FAQ faq1 = initFAQ(new FAQ(), 5, 1L); 
    FAQ faq2 = initFAQ(new FAQ(), 3, 2L); 
    FAQ faq3 = initFAQ(new FAQ(), 11, 3L); 

    EasyMock.expect(faqDao.getAllOrderedDescByRating()).andReturn(
      new ArrayList<FAQ>()); 
    EasyMock.expect(faqDao.makePersistent((FAQ) EasyMock.anyObject())) 
      .andReturn(new FAQ()); 

    EasyMock.replay(faqDao); 

    FAQService.saveFAQ(faq1); 
    FAQService.saveFAQ(faq2); 
    FAQService.saveFAQ(faq3); 

    List<FAQ> list = FAQService.getAllOrderedDescByRating(); 

    Assert.assertEquals(list.get(0).getRating(), 11.0); 
    Assert.assertEquals(list.get(1).getRating(), 5.0); 
    Assert.assertEquals(list.get(2).getRating(), 3.0); 
    EasyMock.verify(faqDao); 
} 

La méthode de l'interface:

List getAllOrderedDescByRating();

Je reçois:

java.lang.AssertionError:
Unexpected method call makePersistent([email protected]): getAllOrderedDescByRating(): expected: 1, actual: 0 makePersistent(): expected: 1, actual: 1 (+1)

Ce que je fais mal?

Répondre

3

On dirait que vous faites 3 appels saveFAQ que EasyMock voit mais dont vous n'en avez pas parlé. Y a-t-il une chance que le FAQService que vous appelez soit connecté à votre faqDao?

Je m'attendrais à ce que vous ayez ajouté les 3 éléments de FAQ à une ArrayList que vous retourniez au lieu de renvoyer un vide, et qu'il n'y aurait pas besoin d'appeler la méthode saveFAQ() (donc supprimez les trois appels à il).

List<FAQ> l = new ArrayList<FAQ>(); 
FAQ faq1 = initFAQ(new FAQ(), 5, 1L); 
l.add(faq1); 
FAQ faq2 = initFAQ(new FAQ(), 3, 2L); 
l.add(faq2); 
FAQ faq3 = initFAQ(new FAQ(), 11, 3L); 
l.add(faq3); 

EasyMock.expect(faqDao.getAllOrderedDescByRating()).andReturn(l); 
+0

Vous aviez raison. Merci beaucoup! J'ai une autre question: Mon interface de service ressemble à ceci: FAQ getFAQ (long id); \t \t Liste getAllOrderedDescByRating(); \t \t SearchResult getResults (SearchCriteria searchCriteria); \t \t void saveFAQ (FAQ faq); \t \t void deleteFAQ (FAQ faq); Ai-je besoin de tester toutes les méthodes? –

+0

Je crois que vous devriez tester toutes les méthodes, même toutes les lignes et les branches en eux. –