Eclipse上でTomcatアプリケーションのカバレッジを取得する
EclEmma がEclipse4.7に標準装備されたようです。
とはいえ EclEmma のことをあまり知らなかったのですが、カバレッジを取得してくれるツールらしいです!
JUnitと組み合わせて使うのが一般的?らしいですが、Tomcat上でWEBアプリケーションを動かしてカバレッジ取得できると「作ったコード通ってるよね?」っていうのが簡単に確認できる=個々人の開発時の品質向上に繋がるのでは?なんて話。
しかし、WTPでサクッとは出来なさそうな予感、、、
そして「カバレッジの構成」にTomcatを指定する方法がない( ゚Д゚)<なんだってー!?
何かしらいい方法はないかと思って、カバレッジの構成内に Javaアプリケーション があるのであれば、
なにかしら設定を追加すればTomcatアプリケーションとして動くのではないかと模索してみた話。
結果、それっぽいことが出来たのでまとめてみました。
模索するにあたり、下記の記事がとても参考になりました。
“使える”Eclipseプラグイン徹底攻略 - (3/3)第7回 単体テストを楽にするプラグイン:ITpro
内容は Tomcat5 の内容なので、そっくり真似てもうまくいかなかったので、Eclipse4.7バージョンでまとめてみようと思います。
まずはWTPのサーバー起動コマンドを丸パクリします。
次に画面の赤枠から「カバレッジの構成」を選択して、Javaアプリケーションから新規作成します。
Tomcatで実行したいプロジェクトを選択して、メイン・クラスに「org.apache.catalina.startup.Bootstrap」と記述します。
プログラムの引数に「start」、VM引数にWTPで指定した引数を貼り付けます。
Tomcatとして動かすので、クラスパスにTomcatのライブラリを外部JARの追加で追加します。
あとは上記の設定を複製して、プログラムの引数を「stop」にしたバージョンを作成しておきましょう。
※ stopで停止しないとカバレッジが取得できないみたいです。
では、カバレッジを取得するとどうなるか、適当に作られたサンプルプロジェクトで見てみましょう。。。
とても残念なソースコードですが、わかりやすいのでそのままで、Tomcatをカバレッジ構成で作成した「start」の設定で立ち上げた後、
画面から上記showを呼び出し、「stop」をした後のカバレッジ結果になります。
if文は通ることがないので、赤色の背景色になっていて実行された箇所が碧背景になります。
自動テストではないですが、サクッと動かして確認するにはいいかもしれないですね!