2012-07-30 9 views
18

これについていくつかの質問がありましたが、私の特定の問題の答えを理解できないようです。EasyMockを使ってvoidメソッドをテストする方法

私はmockオブジェクトを持っています。私はテストのためにいくつかのメソッドに送る "object1"を呼び出し、testMethod()を呼び出すことができます。だから私は

testMethod(object1); 

を呼び出して終了します。このテストメソッドのどこかで、メソッドを呼び出す部分があります。

object1.toggleDisplay(); 

これは無効メソッドです。この方法は、それが実際に何かを返す

object1.getDisplay() 

ようだったら、私は通常、しかし

EasyMock.expect(object1.getDisplay()).andReturn(whatever); 

行い、これだけは確かに呼ばれてきたことをテストするために、これはvoidメソッドである、と私は希望します一定の時間、これを行う最も簡単な方法は何ですか?物事はここ数年で変化していない場合は、あなたの期待を設定する際

おかげ

答えて

22

は、あなたがexpectLastCallを使用しています。

object1.toggleDisplay(); 
object.expectLastCall(); 
+1

を、私は私の実際のメソッド内object.expectLastCallを()配置する必要がありますので、待って?私は私のユニットテストクラスと私の実際のプログラムクラスを分離し、私の実際のプログラムの中にユニットテストコードを持たないことを望むだろう。 – KWJ2104

+0

いいえ、以前に 'EasyMock.expect(object1.getDisplay())を使っていたところで、' expectLastCall()。times(NUM_TIMES) 'をユニットテストの中に入れて、返ってください。 – DoctorRuss

+0

私はこれを特定のメソッドをターゲットにすることができますどのような方法ですか?例えば、私はtoggleOn()とtoggleOff()メソッドを持っています。 – KWJ2104

10
object1.toggleDisplay(); 
EasyMock.expectLastCall().times(5); 

か、静的メソッドEasyMockインポートする場合:

import static org.easymock.EasyMock.*; 

[...] 

object1.toggleDisplay(); 
expectLastCall().times(5); 
関連する問題