tanigonのS2部屋

メイン日記はこちら(tanigonの日記)

2004-06-24

GroovyMock

 groovy.mock.GroovyMockあたりを少し調べてみる.が、型なし(もしくはdynamic)言語的?アプローチなのかな。このMockはこのままだと GroovyObjectに対してしか作用できないみたい。

 ソースに含まれるGroovyMockのテストケースを見てるとなかなか面白いんだよね。 new Mock(SomeInterface.class) とかもしてないわけで。何も指定していない。ほんとうの意味でブラックボックス(笑)

 テスト自体は

  mock = GroovyMock.newInstance();
  mock.someFunc("test");  // これがexpectation
  mock.instance.someFunc("test");   // これが実操作 
  mock.verify();

 という感じなので、実際にどうするかというと、

  tester.setDependency( mock.instance );

 というような感じでmockをセットしてやって、

  tester.doMethod();

 とか。doMethod()内部で呼ばれていれば使うわけで。

 おまけにClosureを使って

  mock.someFunc( { arg | assert arg=="hoge" } );

 とか書けるんですよ。これってある意味mockを作りたいインタフェースの実装を手軽に提供してる、かつ、インターセプタみたいな雰囲気で、なんか融通も利きそうですごそうな予感。

 Groovyに依存することになるがなかなか面白いような気はする。Javaな開発に適用を計画するとmock.instance=GroovyMock#getInstance()が GroovyObjectを返却していてはダメなわけだから、ここはやっぱりDynamic Proxyな方法を適用せざるを得ないか。

 テストのためにMockをわざわざ用意するのはなんだか違うような気がするが、ブラックボックスとしての挙動やExpectationは指示することになる、というあたりのバランスを解決してくれないかな? つまり「ラクにかける」ならより多様なMockを即座に用意して、ソースコードも読みやすくて、テスト書く人もウハウハという状況が考えられるような気がする。

 

UkasanahUkasanah2012/06/04 00:32This arictle is a home run, pure and simple!

tqabkceunytqabkceuny2012/06/04 15:07b3nSm3 <a href="http://hcgotutagnfu.com/">hcgotutagnfu</a>

scokiwjwvvscokiwjwvv2012/06/05 10:03MIKIdn , [url=http://muqefmpvqhqv.com/]muqefmpvqhqv[/url], [link=http://xjmaqjgbbjzd.com/]xjmaqjgbbjzd[/link], http://mozxxsmqcrmx.com/

phnclqgjalphnclqgjal2012/06/05 16:08uoRaYh <a href="http://gweksgamtmay.com/">gweksgamtmay</a>

hwbaoqkghwbaoqkg2012/06/05 20:05UBWY5g , [url=http://ubbncdcduidu.com/]ubbncdcduidu[/url], [link=http://fjmhbkharaol.com/]fjmhbkharaol[/link], http://zylprstrgner.com/

MasterMaster2013/11/22 23:09I'm not easily imesrpsed. . . but that's impressing me! :)

BsaBsa2013/11/24 01:48You've really <a href="http://lcnycriqmyb.com">imrsesped</a> me with that answer!

MargaretMargaret2013/11/24 10:11What a pleasure to find someone who iditeifnes the issues so clearly http://ujhhwzhog.com [url=http://wrlqlgneunl.com]wrlqlgneunl[/url] [link=http://shwqrfiny.com]shwqrfiny[/link]

TiagoTiago2013/11/25 10:48<a href="http://fkkrmdyd.com">Nonthig</a> I could say would give you undue credit for this story.

ClaudiooClaudioo2013/11/25 17:07This is both street smart and ingitletenl. http://mgiaznkohuo.com [url=http://qhjpkicqq.com]qhjpkicqq[/url] [link=http://vvngerux.com]vvngerux[/link]