最簡單的做法是設置另一個項目來打包測試jar包的類,然後將其設置爲正常的test-scoped依賴項。
如果您不想/不能這樣做,您可以使用程序集插件在process-test-classes
階段(即在測試已編譯但未執行測試之前)創建一個jar。下面的配置將調用程序集插件,在目標目錄中創建一個名爲classloader-test-deps
的jar。然後您的測試可以根據需要使用該jar。
程序集插件使用包含target/test-classes內容的程序集描述符(在src/main/assembly中稱爲test-assembly.xml)。我設置了一個過濾器來包含com.test包及其子項的內容。這假設你有一些包名稱約定,你可以申請jar的內容。
程序集插件默認將jar作爲附加工件,通過指定attach
爲false,它不會被安裝/部署。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-2</version>
<executions>
<execution>
<id>create-test-dependency</id>
<phase>process-test-classes</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>classloader-test-deps</finalName>
<attach>false</attach>
<descriptors>
<descriptor>src/main/assembly/test-assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
這是測試assembly.xml
<assembly>
<id>test-classloader</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.testOutputDirectory}</directory>
<outputDirectory>/</outputDirectory>
<!--modify/add include to match your package(s) -->
<includes>
<include>com/test/**</include>
</includes>
</fileSet>
</fileSets>
</assembly>
不知道我理解這個問題的內容。你想在測試執行之前從某些特定的測試類中創建一個jar嗎? – 2009-09-09 20:40:07
你的測試不完全是一個單元測試。它不測試一個孤立的單元,而是整合多個單元(你的類加載器,java類加載器,文件io)。 – 2009-09-09 20:47:24
您可以添加測試和集成測試以獲得更多回復。 – 2009-09-09 20:49:09