コードがどのように見えるかを正確に伝えるのは困難です。あなたがテストしたいコードを知っていれば、あなたをよりよく助けることができます..しかし、あなたがテストしたいコードを次のように仮定すると:
private BlockingQueue<String> queue;
private List<String> myList = new ArrayList<String> ():
private void setBlockingQueue( BlockingQueue<String> queue ) {
this.queue = queue;
}
public List<String> getMyList() {
return myList;
}
public void setMyList( List<String> myList) {
this.myList = myList;
}
public void doWork() {
System.out.println("blah");
queue.drainTo( myList );
}
テストは
public void testDoWork() {
List<String> stuffToDrain = new ArrayList<String>();
stuffToDrain.add( "foo" );
stuffToDrain.add( "bar" );
myTestingClass.setMyList( stuffToTrain );
BlockingQueue<String> queue = EasyMock.createMock( BlockingQueue.class );
myTestingClass.setBlockingQueue( queue );
queue.drainTo( stuffToDrain );
EasyMock.replay( queue );
myTestingClass.doWork();
EasyMock.verify( queue );
}
正しくない場合は申し訳ありませんが、表示できないコードのテストを提案するのは本当に難しいです...
編集 - モックの使用方法が原因で、変更可能なパラメーターが変更されるとは断言できません。できることは、drainTo メソッドが呼び出されることをアサートすることだけです。もしdrainToが私たちがやりたいことをするなら、他の場所でテストする必要があります..つまり、BlockingQueue.classのテストで
編集 2 - メソッドが呼び出されると予想されるリストについて、より具体的にすることができます。