2012/01/11(水)中島、現状維持で更改

2012/01/11 23:17

もう昨日のことになりますが、中島が現状維持で更改したそうです。

「西武の中島」現状維持で笑顔の契約更改 - 契約更改ニュース : nikkansports.com
http://www.nikkansports.com/baseball/news/p-bb-tp1-20120111-887823.html

一年で出ていくと分かっているだけに複雑な気持ちではありますが、最後に日本一のお土産を置いていってくれると嬉しいです。

さて、片岡の復帰待ちという部分もありますが、これで今年は片岡、栗山、中島、中村というオーダーが組めます。中村の後ろを打つであろう外国人選手が当たりならば、得点力はかなりのものになるでしょう。

……シーズン終盤に浅村が5番を打っている姿しか想像できないのは気のせいでしょうか。

2012/01/10(火)帆足の補償は金銭に

2012/01/10 21:19

結局、帆足の補償は選手ではなく金銭を選んだようです。

【西武】帆足のFA補償「金銭」に決定 - プロ野球ニュース : nikkansports.com
http://www.nikkansports.com/baseball/news/f-bb-tp0-20120110-887737.html

がっかりだ! ナベQと松中さんが談笑する眩しい絵を見たかったのに!

……と、ファンは好き勝手言っていますが、現実問題として高年俸のベテランを獲るにはリスクが高いですしね。私が松中を獲っちまえと言っていたのも、今後のことを考えて他球団を牽制するべきだという意図も含まれているので、純粋に戦力として考えると2億円を出すのは微妙というのは理解しています。

ただ、松中さんはなかったにしても、ピッチャーは本当に取れなかったんですかね? まさか本気で桟原やマイケルで完璧な補強ができたと思ってるの? そりゃ、過去の実績だけならものすごい投手陣であることは間違いないんですが……。

2012/01/09(月)Slim3のテストデータをExcelからインポートする

2012/01/09 14:05

Slim3のアプリのテストデータをExcelで作りたいと思い、インポートするためのUtilクラスを作ってみました。

https://github.com/7pairs/Slim3Utils/blob/master/src/jp/gr/java_conf/ruquia/utils/DatastoreUtil.java

なお、このクラスを使うにはPOIが必要です。

最初はSlim3のクラスを全く使わず、GAE汎用として作るつもりでしたが、色々と面倒な処理が増えてきたので、結局BeanUtilやDatastoreに頼りまくってSlim3専用として作成しました。いずれもうちょっと拡張して、GAE汎用の形にしてみたいと思います *1

2012/01/08(日)賢押杯2012

2012/01/08 23:30

賢押杯2012に参加してきました。結果は2ラウンドの5○3×で敗退。2ラウンドは地蔵でしたが、今までは2ラウンドに来れなかったので、そういった意味では満足しています。次はもっと上に行けるといいな。

なお、1ラウンドで答えたのは以下の8問。

露骨に残念な正解はありませんでしたが、露骨に残念な誤答としては「アルファベット2文字でQBと表記される……」で「キュゥべえ!」と答えたものがありました(正解は「クォーターバック」)。

というわけで色々ありましたが、とても楽しい大会でした。スタッフの皆さん、参加者の皆さん、ありがとうございました。

2012/01/07(土)Slim3でモックテストを実施する

2012/01/07 22:57

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を制御するほうがはるかに楽だったりします。このあたりは好みの問題だと思いますが。