djUnit を Eclipse 4.5 (mars) と Maven2 で使えるようにする

djUnit 自体、2011年頃から更新されていないため、もはや需要がないかもしれませんが、必要に迫られて調べました。

Eclipse 4.5 (mars)

Eclipse 4.x 以降ではプラグインの仕組みが変更されているようで、古い形式のプラグインが動作しません。よって、古い形式のプラグインを動作させるための Eclipse プラグインをインストールする必要があります。

  1. Help > Install New Software…
  2. リポジトリhttp://download.eclipse.org/eclipse/updates/4.5 を追加
  3. Eclipse Tests, Tools, Examples, and Extras
    Eclipse 2.0 Style Plugin Support をチェックしてインストール

djUnit プラグインをインストール。

  1. ダウンロードサイト から jp.co.dgic.eclipse.jdt.djunit_3.5.x_0.8.6.zip をダウンロード
  2. 展開して作成されたフォルダを Eclipse の plugins フォルダにコピー
  3. plugin.xml の plugin > requires に記載されている
    <import plugin="org.eclipse.core.boot"/>コメントアウト

Maven2

pom.xmlJUnit, djUnit, asm, oro の依存関係を追加。(詳細は省略)

ここでは Maven Surefire Plugin を使用します。pom.xml に以下の設定を追加。

<build>
  <plugins>
    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <argLine>-Djava.system.class.loader=jp.co.dgic.testing.common.DJUnitClassLoader -Djp.co.dgic.eclipse.virtualmock.usevirtualmock=true -Djp.co.dgic.eclipse.coverage.usecoverage=false -Djp.co.dgic.eclipse.project.source.dir=${project.build.sourceDirectory}</argLine>
      </configuration>
    </plugin>
  </plugins>
</build>

とりあえず、手元の環境で $ mvn test してテストがパスするようになりました。

余談

テストコードから getClass().getResource(fileName) でファイルを読み込む場合、テストクラスと同じ階層にファイルを配置すると Maven2 からテストを実行した際に正常に読み込まれません。src/main/resources 下に同様のパッケージ階層を作成してファイルを配置する必要があります。
または、ClassLoader.getSystemResourceAsStream("foo/bar/filename") でパッケージを指定してファイルを読み込みます。