[seasar-dev:288] Re: [S2JMS] EasyMockTestCaseについて
Koichi Kobayashi
koichik @ improvement.jp
2006年 3月 5日 (日) 15:00:24 JST
小林 (koichik) です.
Date: Sun, 05 Mar 2006 12:04:09 +0900
From: KOMORI Yusuke <y-komori @ nifty.ne.jp>
To: seasar-dev @ ml.seasar.org
Subject: [seasar-dev:287] [S2JMS] EasyMockTestCaseについて
> s2jca配下の EasyMockTestCase と、 S2EasyMockTestCase ですが、
> createNiceMock() メソッドがサポートされていなかったので追加しました。
> (AbstractMessageBinder のテストを行う上で欲しかったので)
どうもです.
> あと、Subsequence クラスの reply() メソッドと、verify()メソッドですが、
> EasyMockのドキュメントを見ていると、意味合いが逆なのではないかと思います。
ここ分かりにくいですよねぇ.(^^;
> 現在は doTest() メソッドがこのようになっていますが、
> public void doTest() throws Exception {
> verify();
> S2EasyMockTestCase.this.replay();
> replay();
> S2EasyMockTestCase.this.verify();
> S2EasyMockTestCase.this.reset();
> }
>
> 本来は
> public void doTest() throws Exception {
> replay();
> S2EasyMockTestCase.this.replay();
> verify();
> S2EasyMockTestCase.this.verify();
> S2EasyMockTestCase.this.reset();
> }
> で、各テストケースの中では replay() メソッドの中で expect()メソッドによ
> る動作の設定、verify() メソッドの中でテストの実施を行う方がしっくりくる
> と思うのですが、いかがでしょうか。
それはちょっと違うような.
EasyMock 的には,モックは次のようなライフサイクルを持ちます.
モックの作成
record モード
replay()
replay モード
verify()
expect() などでモックを設定するのは record モード,テストの実施を
するのが replay モード,最後にモックを検証するのが verify です.
なので,
> S2EasyMockTestCase.this.replay();
> replay();
この流れはあってます.
モックを replay() モードに設定した後で実際に replay するので.
問題は record モードでの設定を Subsequence#verify() で
やっていることなのですが,結局それが verify の内容なので,
意味は外れてないと思うのですがどうでしょう?
Subsequence の二つのメソッドが実際に実行される順番を
考えると verify() -> replay() となるので逆に感じるのだと
思いますが,自分はむしろ EasyMock の書き順が逆に感じたので
これで自然なんですよね.
それについては以下の冒頭に書いてます.
http://d.hatena.ne.jp/koichik/20050504/1115220007
もし変更するとしたら Subsequence#verify() を record() に
することになるでしょうか.
その方が EasyMock 的ではあります.
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>koichik @ improvement.jp</e-mail>
</signature>
Seasar-dev メーリングリストの案内