読者です 読者をやめる 読者になる 読者になる

日々常々

ふつうのプログラマがあたりまえにしたいこと。

テストをparallelに実行させる

Gradle Maven JUnit

GradleとMavenでテストをparallelに実行させてみたのをGitHubに置いときます。

この程度のは「わざわざ書かなくても」とも思ったんだけど、メモみたいなもんですし。
あ、maven-surefire-pluginを2.14にしたらテスト途中にもログ吐いてくれました。2.5とかだと終わってから一気にだーって吐くんだけど。この辺のバージョンってあまり気にしたことなかったなー。
あと、MavenCentralRepositoryを検索したら2.14って出てきて、一瞬2.5より古いと思いました。気のせいでした。

テストを同時に実行する動機

テストの数が増えてくると、一つ一つはそんなに時間のかからない(と思ってる)テストでも、積み重なるとバカになりません。1秒"も"かかるテストが300個あれば単純に5分です。テスト単体の時間を短くする努力は別にして、でも1秒未満の時間って単体じゃ体感出来ないから、そのテストにだけ取り組んでる時ってなかなか時間かかってるって印象無いんですよね。単体の体感時間が短いもんだから、1秒程度だと「時間のかかるテスト」と思われることも少ない。
……まぁその話は置いといて。マシンスペックは上がって、同時に出来ることは増えてきたので、テストも同時に流しちゃいましょうと。

実際にやってみる

「でも面倒なんでしょう?」
なんて風に思うかもしれませんが、GradleやMavenを使ってるでしょうから、同時実行する程度はちょっと書き足すだけで済みます。この辺。

「クラス間に依存関係があって同時に実行出来ないテストがある」なんて問題が出てくるかもしれませんけど、それはそもそもの問題が表面化しただけであって云々。また今度機会があれば書く。かも。

ちなみに

Gradleはほぼbluepapa32さんが2年前書かれたののまんまです。