所以,我需要为应用程序测试服务层(我需要测试一些方法 - 这是我第一次接触测试部分)
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);
}
界面中的方法:
列出getAllOrderedDescByRating();
我收到:
java.lang.AssertionError:
意外的方法调用 makePersistent这个(faq.FAQ@3461d1): getAllOrderedDescByRating():expected:1,actual:0 makePersistent():expected:1,actual:1(+1)
我做错了什么?
答案 0 :(得分:3)
看起来你正在做EasyMock看到的3个saveFAQ调用,但你还没有告诉它。您拨打的FAQService是否有可能连接到您的faqDao?
我希望你将3个FAQ项添加到你返回的ArrayList而不是返回一个空的,并且根本不需要调用saveFAQ()方法(所以删除对它的三个调用) )。
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);