投稿

4月, 2013の投稿を表示しています

コードカバレッジにテストケース分も含むべきか?

JaCoCO Maven Pluginでテストケースのカバレッジもとるの後、パッチを書いてpull requestを出しました。
結論から言うと、一旦取り下げました。

作ったパッチは、

mavenでJUnitのテストを実行した際に、テストのオブジェクトファイルができる場所(例えばtest-classes)をカバレッジ対象に加える
というものです。前のブログで書いたような結果が得られます。
しかし、以下のような点からデフォルトで含むのはどうなの?という意見がでました。

あまりコードカバレッジにテストケース分を含むのは一般的じゃないんじゃない?だって、プロダクションコードのカバレッジと混ざって、ほんとのカバレッジが見づらくなるじゃん?EclipseのプラグインであるEclEMMAの場合は、テストコードの場所に決まりが無いから全部にしてるんだよね。
#やばい、closeした時、誤訳してたと書いてて気づいた。。。少なくともデフォルトは出さない方がいいよね。
1は、普通フォルダだったりパッケージだったりを分けるんじゃないかな?と思います。
カバレッジもそれぞれで分けて表示できると思うので、問題にならないんじゃないかな、と。
2は、1のように分けていなければ、その通りだと思います。

そもそもパッチを書いた理由は、テストケースのカバレッジも見えるべきじゃない?ということでした。
他の意見としても、デフォルトは出さずオプションで選択できるようにしたらいいんじゃない?というものでした。
Maven pluginの形をとるという事は、いろんなケースがありえる前提に立って2のようなことを避ける方に倒すべきかな、と考え直し取り下げました。
オプション形式に書き直そうと思ってます。

で、JaCoCo Maven Pluginではパッケージで階層化されたレポート出力になるので、混ざらないように書いておくのが良いのかな?
ベストプラクティスとかあるんですかね?

JaCoCO Maven Pluginでテストケースのカバレッジもとる

イメージ
JaCoCoというJavaのカバレッジライブラリを調べています。

テストコードを書いて確認。EclipseのプラグインであるEclEMMAは内部でJaCoCoを使っています。
とりあえずオールグリーンです。


カバレッジが100%ではないですが、ここでは問題にしません。#ほんとはこれを調べてたんですが。
ちゃんとテストコードのカバレッジもとれてます。


次にMaven Pluginです。使ったバージョンは、0.6.3-SNAPSHOT。
HTML、XML、CSVでレポートが出力されます。HTMLのレポートを開いたものです。テストコードのカバレッジが無いです。


調べていくと、prepare-agentゴールでデータを作って、reportゴールでレポート化しています。
prepare-agentゴールでは、JavaAgentを使ってデータを取っています。この辺はたぶんEclEMMAも一緒のはず。
実際、HTMLレポートのSessionsのリンクをたどると、実行時のデータがすべて出てます。


ここを見るとちゃんとテストコードも通ってます。ということは、データは取れているけどレポートできてない、EclEMMAで出てるという事は、Maven Pluginで出ていないですね。


で、いろいろとpomをいじってみましたが駄目だったのでソースをみることに。
https://github.com/two-pack/jacoco/blob/master/jacoco-maven-plugin/src/org/jacoco/maven/BundleCreator.java
public IBundleCoverage createBundle( final ExecutionDataStore executionDataStore) throws IOException { final CoverageBuilder builder = new CoverageBuilder(); final Analyzer analyzer = new Analyzer(executionDataStore, builder); final File classesDir = new File(this.project.getBuild() .getOutputDirectory(…

長岡 IT開発者 勉強会(NDS) 第31回勉強会に参加しました。 #nds31

長岡 IT開発者 勉強会(NDS) 第31回勉強会に参加しました。
NDS自体初めての参加でしたが、とても楽しむ事ができました。
http://nagaoka.techtalk.jp/no31

テーマは「はじめての~」。初心者向けのテーマでなにか話して!ということでした。
以下、発表のまとめというよりも、気になったところの備忘録。発表順です。
スライドなど最新は上のページでまとまってます。

第31回勉強会 アジェンダ(@civicさん) はじめてNDSに参加されたかたも多かったとの事で、@civicさんからNDSについての説明がありました。
誰にでも発表の場を提供します!、というのは、新潟において貴重な場ではないかと感じました。

はじめてのChrome App (@civicさん) Chromeアプリでデバイスなどの低いレイヤーのAPIもあるということでした。
実際にUDPでメッセージを受けるデモをされてました。
bluetoothとかもあったので、今後何かやっていたいと思いました。

はじめてのmac用ビューアアプリ(@piras4さん) 最近はMBAべったりなのにXCode使ってみたこともない、、、、という私にはぴったりでした。
こんな風にするんだ、という感じでした。

はじめてのテスト技法 (@two_pack) NDSの実施ポリシーが非常にいいね!と思い、NDS初参加でしたが私も発表してきました。
http://nagaoka.techtalk.jp/Home
中身はテスト技法の話はしておらずw、「ソフトウェアテスト」に触れるきっかけになれればいいなということで書きました。
初めてSlideshareにも載せてみました。100viewいくとメールが来るんですねw

はじめてのPerl(のモダン?な環境構築) (@hajyajoさん) Perlの開発環境についてでした。システムPerlという言葉を初めて知りましたorz
開発環境用にバージョンを入れ替えるとか、ライブラリを指定のところに入れるとか、rvmみたいのか、と聞いていました。
IDEもあるようですw

はじめてのWindowsストアアプリ (@AILightさん) 生MVPだよ!生Surfaceだよ!と思ってたのは秘密ですw
ちょうど前の日に8のアプリを少し見たのもあって、非常に興味深かったです。
8がないのが痛いですが、や…