業務こなしての問題・気づき
なし。テストするだけなので、新規の発見をするのは、かなり難しい。
趣味開発での問題・気づき
sonarcloud
covarage計測
プルリクを何度か出して解析していたら、とうとうcovarageに引っかかることに。。。
今までは行数自体が少なかったから引っかからなかったけど、大型機能の追加したら、引っかかってしまった。。。
回避方法を考えたが、どうせ後々対応するのなら、今のうちに入れてしまおうと思い、ユニットテストを追加した。
ユニットテスト追加すれば突破できると思っていたが、テスト結果のレポートを取り込まないとcovarage計測がsonarに連携されないことに気づき、結構悩んだ。
対応としては、jacocoのレポート出力機能を利用して、sonarにカバレッジ情報を連携するようにした。
jacocoとsonarcloudの連携方法
自分は、下記の方法で連携するようにした。
plugins { // 省略 id 'jacoco' } // 省略 sonarqube { properties { // 省略 // jacocoのレポート出力先 property "sonar.coverage.jacoco.xmlReportPaths", "build/reports/jacoco/test/jacocoTestReport.xml" } } // 省略 test { finalizedBy jacocoTestReport // report is always generated after tests run } jacoco { toolVersion = "0.8.7" // これはコピペしてきただけなので、検討の必要性あり } jacocoTestReport { dependsOn test // tests are required to run before generating the report reports { xml.required = true csv.required = false html.outputLocation = layout.buildDirectory.dir('jacocoHtml') } }
大事なのは、xml.required = true
の設定をすること。
これが有効になってないと、連携用のxmlが出力されない。
上記設定でgradle test
を実行すると、build/reports/jacoco/test/
に jacocoTestReport.xml
が出力される。
ユニットテスト
TestMeを使ったテストケースの自動生成
sonarcloudのカバレッジ計測で少しでも楽しようと思い、ユニットテストの自動生成について調べていた。
100%自動生成するのは無理だと分かったときは、絶望した!
IntelliJプラグインで、TestMeがよさげだったので、利用することに決定。
開発はIntelliJでやっていたので、敷居が低そうだったってのもある。
Mockitoは、以前利用していたので、難なく利用できた。
JUnit5+Mockitoでユニットテストを生成した。
生成されたテストケースは、カバレッジが高くなるようなケースが自動生成されるようだった。
追加で必要だったのは、期待値の記述だけ。
あと、モックの設定くらい。
使っていて思ったのは、DIを利用するとテストが楽になるなと思った。
後は、Mockitoが便利すぎてヤバイ。
Mockito、マジやばくね?
参考サイト
ユニットテストの自動作成ツールを調べてみた(2019年末版) - Qiita
TestMe - IntelliJ IDEs Plugin | Marketplace
その他雑記
国際フォーラムの解放
そういえば、10/1で国際フォーラムの通行止めが解除されたので、京葉線から品川方面への乗り換えに利用することに。
今まで京葉線ホームから東京駅ホームへ移動するという苦行からやっと解放された。
京葉線から有楽町までの距離と変わらないが、京葉線から東京駅ホームまでの道のりは殺風景だから、心理的に長く歩いてる感じがするんだよね。
今は、京葉線から有楽町までは、人が少なくてかなり快適。
料理
野菜炒めのあんかけ
あまった野菜を適当に炒めて、甘酢餡を作ってかければ、それなりにうまいものが作れることが分かった。
野菜の消費が簡単にできるのがいいと感じた。