なんだかんだで、「アレが出来ない、コレが大変」と書いてきてしまったけど、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になります。 + echoes.act8を若干修正 + Maven化 + JMX Integration 組み込み + シャットダウン専用ポートを使ったgraceful-shutdown + Mockito & PowerMock によるUnitTest + Commons Daemon によるWindowsサービス登録/削除BATの提供 只のEchoサーバの割には気合い入れてます。まぁその分、元は取れたと思います。Maven/JMX/Mockito系/Commons Daemonなど、一通り体に通しておきたかったテクニックでした。