Unitテストを実行するmaven-surefire-pluginの設定
id:tanigonさんのこの記事が大変参考になりました。ありがたいことです。
/project/build/plugins
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<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}" -Djp.co.dgic.eclipse.virtualmock.ignore.library=false</argLine>
<forkMode>always</forkMode>
<useSystemClassLoader>true</useSystemClassLoader>
</configuration>
</plugin>
オプションはほぼおまじないなので省略。以下は注意点。
- コメントにあるようにargLineに改行が入るとエラーになりますので、1行で書きます。
- ${project.build.sourceDirectory}が""でくくられていますが、これがないとHudsonなど(正確にはスペースが含まれるディレクトリ上)で実行するとエラーになります。
この2つは知らないと超ハマるので気をつけてください。
/project/dependencies
<dependency>
<groupId>jp.co.dgic</groupId>
<artifactId>djunit</artifactId>
<version>0.8.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>oro</groupId>
<artifactId>oro</artifactId>
<version>2.0.8</version>
<scope>test</scope>
</dependency>
djunit, junit, asm, oroが必要になります。
(djunitの内部でoroを使っているので、oroも必須です)