手元のMacbook Proで通っていたユニットテストがTravis-CI上で実行したら失敗したので原因を探っていたところ、 Travis-CI上だとタイムゾーンの設定が違っていることが分かった。
stackoverflowでmave-surefire-plugin
を使って指定する方法があったのでそれを試してみた。
Maven Surefire Plugin – Introduction
maven-surefire-pluginを下のような形でsystemPropertyVariables -> user.timezone
をセットする。
たった、これだけでTimezoneを上書き出来る。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.20.1</version> <configuration> <systemPropertyVariables> <user.timezone>Asia/Tokyo</user.timezone> </systemPropertyVariables> </configuration> </plugin>
仕事で作ったPresto
のプラグインで試してみたらZoneId.systemDefault()
の戻り値が指定した値に上書きされてユニットテストが通るようになった。
Change GregorianCalendar to ZonedDateTime by yuokada · Pull Request #3 · yahoojapan/presto-audit
ただ、stackoveerflow
の記事をよく読むとうまくいかない的なことが書いてあるんだがうまく動いた理由はなんでだろう?
疑問は残りつつも一旦これで対応完了としたい。