java

JUnitコードの自動生成も出来る古の神Eclipseプラグイン「CodeProAnalytix」は今でも使える

投稿日:2019年7月15日

デスマーチPM「各社のPG進捗が遅れていてユニットテストを書く暇が全く無いんですよ、なにかいい手は有りませんかね・・・? 因みに本プロジェクトはカバレッジ100%で請け負っています!(キリッ)」

何故100%確約したのかとか先にUT書けばとか無限に出てくる言いたいことはさて置き。

数十億のお金が掛かった、中抜きが常態化していて様々な下請け会社が参画している大規模プロジェクトのPMから囁かれる「地獄」へのお誘い。

身の回りでそんな悪魔からの囁きは有りませんか?

無くても有った時の為に何かしら切り抜ける方法を持っておきたいところです。私はこの危機を過去10年で2回、Eclipseプラグイン「Code Pro Analytix」のお世話になって切り抜けました。

もう開発も止まってるプラグインですが、こいつ・・・まだ動くぞ。

環境

  • Windows 10
  • Pleiades-2019-03

Code Pro Analytixとは

2010年、GWT(Google Web Toolkit)を効率的に開発する為の有償製品を販売していた「Instantiations」社をGoogleが買収。

当時はもっとGWTを流行らせたかったでしょうから、同社の製品を無償で公開、その流れで同じく有償製品だったCode Pro Analytixも無償で使えるようになりました。

2010年当時は神レベルの評価を受けていた同Eclipseプラグインですが、現在はGoogle Codeの閉鎖と共に開発は終了しています。

2011、12年辺りにリリースされたEclipse3.7用のものが最新版で、かつ配布サイトが無い為個人サイトに点在するだけになっており、幻のプラグインになりつつあるのが現状です。

インストール

下記からプラグインzipをダウンロードします。

解凍して出来たディレクトリから「features」「plugins」二つのディレクトリをEclipseの配下ディレクトリにコピー。「CodeProAnalytix」以降は作成してください。

「pleiadesルート\eclipse\dropins\CodeProAnalytix\eclipse」

Eclipseを再起動することで有効になります。

現代のEclipseでも動く機能

Eclipse上のプロジェクトを右クリック→「CodePro Tools」で使える機能がティアダウンされます。

「依存関係の分析」。呼び出しが分かるので初見のプロジェクトを分析する時に便利なんですよね。

次に本命の「Generate Test Case」。
業務ロジックに対してJUnitテストコードを生成してくれます。

時代的にJUnit3のコードなのが残念ですが、全クラスのテストコードを生成してくれます。例えば「demo」プロジェクトに対して実行すると「demoTest」プロジェクトを作ってくれて、~Test.javaを生成してくれます。

後は生成されたテストコードをdemoTestからdemoプロジェクトにコピーすることでJUnit実行することが出来ます。自動生成されたテストコードが、既存のテストコードとバッティングしないのがいいですね。

いやー、動くもんです。

自動生成は出来るけど

一瞬で全クラスのJUnitテストコードが出来ました。これを雛型にすればデスマーチプロジェクトの進捗を助ける一助にはなるかも知れません。

最近はEvoSuiteのような代替ソフトウェアがありますが生成されるコードが大分複雑な印象があります。それに比べてCodeProが生成するコードはシンプルなのでJUnitのバージョンを上げる際にも置換が効きやすいです。

ただどれを使うにせよ、網羅率を上げる為の生成なので中身のあるユニットテストは当然ながら行えていません。

業務ロジックの要件を満たし、想定外のバグを検出し、継続して実行出来るようにする普通のユニットテストコードが必要です。最初からUTコードを書いておけばこのプラグインに頼ることも無いですし、入れなくて済むならそうしたいところです。

それにしても、デスマーチになる要因は上流にある場合もあれば下流にある場合もあるし、大規模人月プロジェクトは難しいですね。

精神的な健康の為にも出来るなら近寄らないようにしたいものです。

-java
-,

執筆者:

関連記事

CentOS7にOpenJDK11をインストール、alternatives後の再ログインでJAVA_HOMEも自動変更

OpenJDKはCentOS-Baseリポジトリのupdatesに登録されているので新規yumリポジトリ追加は不要です。 [root@spock tmp]# yumdb search from_rep …

JavaとPerlでTCPソケット通信

目次1 はじめに2 対象読者3 実装3.1 TCPサーバ(Perl)3.2 TCPクライアント(Java)3.3 実行4 まとめ はじめに 前回の続きです。One IT ThingJavaとPerlで …

Spring&JSPの検証環境を作る

2019年現在、オワコン風潮の強いJSPですが使っているプロジェクトもまだまだあり、枯れた技術を好む官公庁系のプロジェクトでは根強いシェアを誇っています。実装検証をする為に環境を作る機会があったりする …

Maven依存ライブラリのライセンスサマリを出す

Mavenで依存しているライブラリのライセンス累計を作成します。下記のように「ライセンス名 ライブラリ個数」の行がライセンス種別数分作られるイメージ。 BSD 4ASL2 43MIT 5 開発中のクロ …

SpringBootアプリにBootstrap4を追加(WebJars使用)

SpringBootにCSSやJSを追加する場合は概ね以下のパターンがあるんじゃないかと思います。(bowerはもう使わない方向で) CDNで外部から読み込む<script src=&#8221 …

 

shingo.nakanishi
 

東京在勤、1977年生まれ、IT職歴2n年、生涯技術者として楽しく生きることを目指しています。デスマに負けず健康第一。