2012/01/07(土)Slim3でモックテストを実施する
Slim3のアプリのテスト時に、Serviceにモックを差し込んで、Controllerのみのテストを行いたいケースがあると思います。DIコンテナを使っていれば、Serviceに注入するImplをモックにすればいいと思いますが、GAEでDIを使うのはちょっと現実的ではありません。というわけで、テスト時にDIコンテナっぽく振る舞うUtilクラスを作ってみました。
https://github.com/7pairs/Slim3Utils/blob/master/src/jp/gr/java_conf/ruquia/utils/MockUtil.java
人様に見せるんだったら、パッケージ名を取得するときにruquiaなんて名前で登録するんじゃなかったなw
さて、実際の使い方です。まず、テストしたいControllerを継承したクラスを作り、そのコンストラクタでこのUtilを使用します。以下のサンプルは、テスト対象のTestControllerにserviceというTestServiceのprivateフィールドがいること、TestServiceにはfooMethod、barMethodがいることを前提にしています。
public class TestWithMockController extends TestController {
public TestWithMockController(){
super();
try{
MockUtil.inject(
this,
"service",
new TestService() {
@Override
public String fooMethod() {
return null;
}
@Override
public List<String> barMethod(String arg) {
return null;
}
}
);
} catch(Exception e) {
e.printStackTrace();
}
}
}
これでモックを差し込んだControllerができました。なお、サンプルは差し込むモックを匿名クラスにしましたが、もちろんきちんとしたクラスを作っても構いません。
さて、今度はテストプログラムのソースを修正します。Controllerのテストプログラムにtester.startメソッドを呼んでいる箇所があると思います。
tester.start("/test");
この部分を、先ほど作ったTestWithMockControllerを呼ぶように修正します。例えば、TestControllerと同じパッケージにTestWithMockControllerを作った場合、以下のように書き換えます。
tester.start("/testWithMock");
あとはテストを実行するだけです。
ちなみに、私はテストのためだけにアクセス範囲を変えるのが嫌だったのでここまでやりましたが、ぶっちゃけここまで苦労するくらいなら、最初からserviceフィールドをprotectedにして、テストプログラムから直接serviceを制御するほうがはるかに楽だったりします。このあたりは好みの問題だと思いますが。
2012/01/06(金)中島とヤンキースの交渉決裂
結局、中島とヤンキースの交渉はまとまりませんでした。
ヤンキースが中島との交渉決裂を発表 - MLBニュース : nikkansports.com
http://www.nikkansports.com/baseball/mlb/news/f-bb-tp2-20120106-885592.html
ちょっと早かったけどおかえりなさい。
以前も書いたように *1 、私はポスティングシステム自体に否定的なので、今回の件も「ヤンキース爆発しろ」以上の感想は抱いていません。中島にはFAで堂々と挑戦できるようになるまでライオンズで頑張って欲しいと思います。
さて、中島が残留するということは、内野陣はファースト浅村、セカンド片岡、サード中村、ショート中島という布陣になると思います。ヘルマン、カーターともに登録は内野ですから、浅村を外野に回すということも考えられますが、浅村の将来のことを考えると内野で鍛えたいところではあります。このあたりは両外国人の働き次第というところですかね……。
2012/01/05(木)帆足の人的補償
今オフ最大の補強のチャンスがやってきました。
【西武】帆足の人的補償リスト受け取る - プロ野球ニュース : nikkansports.com
http://www.nikkansports.com/baseball/news/f-bb-tp0-20120105-885538.html
まず、馬原、攝津、森福、山田、岩嵜、金澤、吉川、大場、大隣は確実にプロテクト対象になるはずです。また、神内、藤岡、高橋といった中堅どころや、若い巽、川原、坂田、金も守りたいところでしょう。しかし、もうこれですでに16人です。ライオンズの弱点がリリーフ陣であることはホークスも分かっていますから、ピッチャーを厚めにしてくるとは思いますが、いくらなんでも半分を超えることはないと思います。つまり、この中からもリスト漏れする選手がいるということです。
実際のリストの中身は想像するしかないのですが、上記の選手のうちリストから漏れた選手がいれば獲得の対象になると思います。また、上記の選手たちをプロテクトしようとすると、復活待ちの新垣、甲藤、小椋あたりが外れる可能性は高いです。もちろん復活待ちではあるのですが、俺達の覚醒よりは期待できると思います。逆に、本気でピッチャーをガッチリ固めてきたのであれば、マスコミ報道どおり松中や多村が外れる可能性は高いですから、そこを突くのもありでしょう。
……しかし、杉内、和田、ホールトンが抜けてもまだこれだけピッチャーのいるホークスは本当にすげぇな。
2012/01/04(水)開幕投手争い
今年のライオンズの開幕投手は全員にチャンスがあるようです。
「今年はみんなにチャンス」/渡辺監督 - 監督語録ニュース : nikkansports.com
http://www.nikkansports.com/baseball/news/p-bb-tp1-20120104-884815.html
去年の成績だけで考えれば西口なのでしょうが、CS最終戦では涌井もようやく本来のピッチングを見せてくれましたしね。オープン戦で結果を出した選手を起用することになるのでしょう。個人的には西口の開幕投手を見たいのですが、涌井や岸がその座を奪うくらいの完全復活をしてくれるのであれば、それはそれで喜ばしいと思います。
よく考えてみると、過去の実績だけ見てみれば、ライオンズの先発陣も悪くないんですよね。涌井、西口、岸、石井一が15勝、牧田が10勝、谷間の6番手でトータル5勝拾えれば75勝。充分クライマックスシリーズ圏内です。
不安視されているリリーフ陣も補強が進み、桟原、星野、江草のSHEに加え、マイケル中村という絶対のクローザーもいます。ここに岡本篤、藤田、長田が加わるのですから、リリーフ陣が出てきた時点で勝負はもう決まったようなものですよね!