Unitテストを実行するmaven-surefire-pluginの設定
id:tanigonさんのこの記事が大変参考になりました。ありがたいことです。
/project/build/plugins
<!-- UnitTest(DjUnit使用) --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.4.2</version> <configuration> <!-- ↓改行させるとClassNotFoundExceptionが出る --> <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
<!-- jUnit / djUnit --> <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も必須です)