タイトルがわかりやすい。
環境
- Scala 2.11.4
- sbt 0.13.6
テストフレームワークはScalaTest使ってます
sbtでカバレッジを測定する+COVERALLSに送信する
Scalaのカバレッジ測定、scctというのが一般的だったけど、なにか色々あって現在はScoverageという名前になって開発が継続されています。
Scoverageの最新バージョンはScala2.10をサポートしていないので注意しましょう(旧バージョン指定したら動くかも。試してないけど。)
導入は以下の通り。
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 |
|
これでカバレッジ測定用のsbtタスクが使えるようになります。
sbt scoverage:compile
- カバレッジ計測のためのデータつきでコンパイルする
sbt scoverage:test
- カバレッジ計測してレポートを生成
sbt coveralls
- 生成されたレポートをCOVERALLSに送る
- 環境変数
COVERALLS_REPO_TOKEN
が設定されてる必要あり。
人間が見られる形式のレポートは、target/scala-2.11/scoverage-report/index.html
にある。
CircleCIでビルド+テスト+カバレッジ測定する
circle.yml
の書き方は公式ドキュメント参照。
sbtのバージョンは、project/build.properties
で指定しておけばそれを使ってくれるようです。
1 2 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
COVERALLSのトークンを入れる環境変数 COVERALLS_REPO_TOKEN
は、リポジトリに含めたくないのでCircleCIのプロジェクト設定画面から追加する。
あと、CircleCIはjunit形式のテスト結果xmlを認識してくれるようなのでその設定もする。
1 2 3 4 |
|
xmlは環境変数 CI_REPORTS
から探されるので、ScalaTestのオプションとしてxmlの出力先を適切に指定してやる。
結果
CircleCI。 ビルド結果の”Artifacts”からカバレッジレポートのhtmlが見られる。
COVERALLS。結果が取れていてよかったですね。
以上、ご査収の程お願いしたく。