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
-,

執筆者:

関連記事

Jerseyで開発したRESTで任意リファラからのCORSアクセスを許可する

package jp.hoge.filter; import java.util.Properties; import javax.servlet.http.HttpServletRequest; i …

JavaでRSA暗号を使う際にCRYPTREC暗号リストに足元をすくわれる可能性を回避する

標準的な暗号しか使わないケースでもJavaでRSAを使う時はBouncyCastleを入れておいた方が無難、という話です。 “ECB”という文字列がプログラム中にあると監査に引 …

IVS対応フォント「IPAmj明朝」で使えるフォントをWeb上に一覧表示してみる(2)

前回の続きです。One IT ThingIVS対応フォント「IPAmj明朝」で使えるフォントをWeb上に一覧表示してみる(1)https://one-it-thing.com/2098IPAmj明朝フ …

ブラウザでRSA暗号化したデータをサーバで復号する(Angular + JSEncrypt、Spring MVC)【前編】

セキュリティ的にクリティカルなデータをクライアントブラウザで暗号化保存するようにしてみます。 通信経路はHTTPSで暗号化されていてもスマホに重要なデータが平文で残っていたら珠に傷です。 目次1 環境 …

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

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

 

shingo.nakanishi
 

東京在勤、職歴2n年中年ITエンジニアです。まだ開発現場で頑張っています。

19歳(1996年)から書き始めたアウトプット用プライベートWeb日記数が5,000日を超え、残りの人生は発信をして行きたいと思い、令和元日からこのサイトを開始しました。勉強と試行錯誤をしながら、自分が経験したIT関連情報を投稿しています。

私と同じく、今後IT業界で生計を立てて行きたいと考えている方や、技術共有したいけど仲間が居なくて孤独、といった方と一緒に成長、知識共有して行けたら楽しいな、と思っています。