SR Office

ブログ
2013年4月6日

Google App EngineでLocalServiceTestHelperを使用した時のタイムゾーン

SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();Google App Engine(GAE)でアプリを作成していて、いいなと思うことはローカル環境でのテスト環境を提供してくれていることだ。

先日、記したJDOを使ってオブジェクトの永続化をする場合でも、ちゃんテストユーティリティが用意されている。LocalServiceTestHelperを使えばローカルでユニットテストができる。

public class LocalDatastoreTest {

private final LocalServiceTestHelper helper =
new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());

@Before
public void setUp() {
helper.setUp();
}

@After
public void tearDown() {
helper.tearDown();
}

}
マニュアルに書いてある通り。Helperの開始処理と終了処理を行うだけで、ローカル環境でユニットテストができる。なので、データベースとか用意しないでいいのでお手軽
だ。

しかし、このLocalServiceTestHelperを使うとデフォルトのタイムゾーンがUTCに設定される。なので、日付関連のプロパティを持っていたり、ロジックを書いている場合はテストエラーになるので注意が必要である。

@Before
public void setUp() {
helper.setTimeZone(TimeZone.getTimeZone(“Asia/Tokyo”));
helper.setUp();
}

}
Helperにタイムゾーンの設定をすると日本時間でテストできる。Javaのタイムゾーン設定は初めてだったので、調べてしまった。