三流プログラマの雑記

プログラム、ゲーム、株、その他雑記など書いてます。

Eclipse上でTomcatアプリケーションのカバレッジを取得する

EclEmma がEclipse4.7に標準装備されたようです。
とはいえ EclEmma のことをあまり知らなかったのですが、カバレッジを取得してくれるツールらしいです!

JUnitと組み合わせて使うのが一般的?らしいですが、Tomcat上でWEBアプリケーションを動かしてカバレッジ取得できると「作ったコード通ってるよね?」っていうのが簡単に確認できる=個々人の開発時の品質向上に繋がるのでは?なんて話。

しかし、WTPでサクッとは出来なさそうな予感、、、
そして「カバレッジの構成」にTomcatを指定する方法がない( ゚Д゚)<なんだってー!?

何かしらいい方法はないかと思って、カバレッジの構成内に Javaアプリケーション があるのであれば、
なにかしら設定を追加すればTomcatアプリケーションとして動くのではないかと模索してみた話。

結果、それっぽいことが出来たのでまとめてみました。

模索するにあたり、下記の記事がとても参考になりました。
“使える”Eclipseプラグイン徹底攻略 - (3/3)第7回 単体テストを楽にするプラグイン:ITpro

内容は Tomcat5 の内容なので、そっくり真似てもうまくいかなかったので、Eclipse4.7バージョンでまとめてみようと思います。

f:id:morio_1101:20180121134040p:plain
まずはWTPのサーバー起動コマンドを丸パクリします。

f:id:morio_1101:20180121135842p:plain
次に画面の赤枠から「カバレッジの構成」を選択して、Javaアプリケーションから新規作成します。
Tomcatで実行したいプロジェクトを選択して、メイン・クラスに「org.apache.catalina.startup.Bootstrap」と記述します。

f:id:morio_1101:20180121134606p:plain
プログラムの引数に「start」、VM引数にWTPで指定した引数を貼り付けます。

f:id:morio_1101:20180121134706p:plain
Tomcatとして動かすので、クラスパスにTomcatのライブラリを外部JARの追加で追加します。

あとは上記の設定を複製して、プログラムの引数を「stop」にしたバージョンを作成しておきましょう。
※ stopで停止しないとカバレッジが取得できないみたいです。

では、カバレッジを取得するとどうなるか、適当に作られたサンプルプロジェクトで見てみましょう。。。

f:id:morio_1101:20180121135253p:plain

とても残念なソースコードですが、わかりやすいのでそのままで、Tomcatカバレッジ構成で作成した「start」の設定で立ち上げた後、
画面から上記showを呼び出し、「stop」をした後のカバレッジ結果になります。
if文は通ることがないので、赤色の背景色になっていて実行された箇所が碧背景になります。
自動テストではないですが、サクッと動かして確認するにはいいかもしれないですね!