なんだかんだで、「アレが出来ない、コレが大変」と書いてきてしまったけど、static/final/private系絡みを回避していれば、かなり使いやすいのでオススメと言える。
インターフェイスのmockがサクサク作れるので、依存性注入な構造のコードであれば嵌りどころも少ない。
static/final/private系を完全に回避出来ているならMockitoのみで平気。
多少でもこれらがまざってくるなら、PowerMockを組み合わせましょう。
Apache MINAで簡単なEchoサーバのサンプルのテストコードを昨日・今日と書いていたのだけれど、IoHandlerやProtocolDecoder/Encoderなど、インターフェイス(or Adapter)を実装したシンプルなPOJOの部分は、あれほどstaticやMBeanServerで苦労したのが嘘だったかのように「さっくり」と書けてしまった。
"System.exit()をmockする"のと"ManagementFactory.getPlatformMBeanServer()"で嵌った時間を合わせて丁度、IoHandlerやProtocolDecoder/Encoder周りのテストコードに費やした時間とイーブンくらい。
嵌りどころを回避出来ていれば、かなり使いやすい。
近日中に今回でっち上げたEchoサーバのコードをcodereposにUPします。echoes.act9になります。
只のEchoサーバの割には気合い入れてます。まぁその分、元は取れたと思います。Maven/JMX/Mockito系/Commons Daemonなど、一通り体に通しておきたかったテクニックでした。