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

執筆者:

関連記事

IPAmj明朝のttfファイルをJVMに読み込ませてSwingで表示(要Java11)

目次1 はじめに2 Java11でSwingがIVSを認識するようになった3 Java Swingソース4 動作確認4.1 Java 8(1.8.0_202)で実行4.2 Java 11(11.0.2 …

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

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

Maven環境別ビルド時、プロファイルの違いでdependencyを変える

MavenのResourceFilteringを使い、production、staging、developmentとかで環境別ビルドしている時、ある環境ビルドの時だけ特定のライブラリを追加する、をmv …

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

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

Tomcat9をCentOS7&OpenJDK11で起動

CentOS 7.6にOpenJDK 11を以下の記事で入れている状態です。One IT ThingCentOS7にOpenJDK11をインストール、alternatives後の再ログインでJAVA_ …

 

shingo.nakanishi
 

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