djUnit を Maven プロジェクトで使う

Eclipse Kepler は C:\eclipse_kepler にインストールされているとする。

1. Eclipse Kepler に djUnit プラグインをインストールする

2. コマンドプロンプト

mvn install:install-file -Dfile=C:\eclipse_kepler\plugins\jp.co.dgic.eclipse.jdt.djunit_0.8.6\djunit.jar -DgroupId=jp.co.dgic -DartifactId=djunit -Dversion=0.8.6 -Dpackaging=jar -DgeneratePom=true

を実行する。

3. 自分のユーザーディレクトリの直下の .m2\repository\jp\co\dgic\djunit\0.8.6djunit-0.8.6.pom ができている。これを次のように修正する。

<?xml version="1.0" encoding="UTF-8"?>
<project
  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>jp.co.dgic</groupId>
  <artifactId>djunit</artifactId>
  <version>0.8.6</version>
  <description>POM was created from install:install-file</description>
  <dependencies>
    <dependency>
      <groupId>asm</groupId>
      <artifactId>asm</artifactId>
      <version>3.1</version>
    </dependency>
    <dependency>
      <groupId>oro</groupId>
      <artifactId>oro</artifactId>
      <version>2.0.8</version>
    </dependency>
  </dependencies>
</project>

ここからは Eclipse Mars で作業。まずは普通に Maven のプロジェクトを作る。*1

3. pom.xml/project/build/plugins 要素に Surefire Plugin の記述を追加。

<plugin>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.18.1</version>
  <configuration>
    <argLine>-noverify -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} -Djp.co.dgic.eclipse.virtualmock.ignore.library=false</argLine>
    <useSystemClassLoader>true</useSystemClassLoader>
    <reuseForks>false</reuseForks>
  </configuration>
</plugin>

argLine 要素の中身は 1 行で書く。

4. pom.xml/project/dependencies 要素に以下を追加*2

<dependency>
  <groupId>jp.co.dgic</groupId>
  <artifactId>djunit</artifactId>
  <version>0.8.6</version>
  <scope>test</scope>
</dependency>

これでとりあえず動きます。出力の日本語が文字化けするのはどうにかならんかにゃー。一応回避方法(?)はあるけど。

なお、残念ながら Jcoverage は現在は使えない模様(昔は Maven 用の Jcoverage プラグインがあったらしい)。

*1:が、そのままだと参照する JREJ2SE-1.5 になってしまうのでしかるべき修正を加えて JavaSE-1.8 にする。さらに Eclipse の設定で、JavaSE-1.8 が参照する JRE を公開 JRE ではなく JDK 内の JRE を参照するように変える必要がある。

*2:JUnit に関する記述は既にあるはずなので新たに書く必要は無い