jmock 2.4.0をちょっとだけ練習。
ダイナミックプロキシじゃなくってcglibを使用するには
setImposteriser(ClassImposteriser.INSTANCE);
って記述する必要アリ。

1.0系はmethod("findBetween")とメソッド名をハードコードする必要があって、メソッド名を安易にリファクタリングできなくてむかついてたけど、2.0系からはone (diaryDao).findBetween(0, 3)っていう記述が可能になって不満が完全解消。
ただ、new Expectations() …の記述方法は若干慣れが必要。

package jp.nixi.service.business.diary.impl;

import java.util.List;

import jp.nixi.service.business.diary.domain.Diary;
import jp.nixi.service.business.diary.impl.dao.DiaryDao;

import org.jmock.Expectations;
import org.jmock.integration.junit3.MockObjectTestCase;
import org.jmock.lib.legacy.ClassImposteriser;

import com.google.common.collect.Lists;

public class DiaryServiceImplTest extends MockObjectTestCase {

	private DiaryServiceImpl target;
	
	private DiaryDao diaryDao;
	
	@Override
	protected void setUp() {
		setImposteriser(ClassImposteriser.INSTANCE);
		target = new DiaryServiceImpl();
		diaryDao = mock(DiaryDao.class);
		target.setDiaryDao(diaryDao);
		target.setFetchSize(3);
	}
	
	public void testFindDiariesOn() {
		
		checking(new Expectations() {{
			 one (diaryDao).findBetween(0, 3);
			 will(returnValue(Lists.newArrayList(new Diary(0), new Diary(1), new Diary(2))));
		}});
		
		List<Diary> actual = target.findDiariesOn(0);
		assertEquals(3, actual.size());
		assertEquals(new Long(0L), actual.get(0).getId());
		assertEquals(new Long(1L), actual.get(1).getId());
		assertEquals(new Long(2L), actual.get(2).getId());
	}
}