アプリケーションの一部の単体テストは、アプリケーション自体の一部である特定のファイル リソースの検索と操作に関連しています。これらのテストは、展開されたディレクトリとしてではなく、JAR ファイルとして展開されるアプリケーションの実際の運用設定で実行する必要があります。
デフォルトでファイルシステムにコンパイルされたクラスではなく、プロジェクトが生成したjarファイル(およびその他の宣言されたライブラリ依存関係)をクラスパスとして考慮して単体テストを実行するようにMavenに指示するにはどうすればよいですか?
つまり、現在、単体テストのクラスパスは次のように設定されています/$PROJECTPATH/target/classes/
。
代わりに、このクラスパスを に設定したいと思います/$PROJECTPATH/target/myjarfile.jar
。
http://maven.apache.org/plugins/maven-surefire-plugin/examples/configuring-classpath.htmlで説明されているように、依存関係クラスを手動で追加および削除しようとしまし たが、今のところ機能していません。
私の現在のプロジェクトPOMは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.mygroupid</groupId>
<artifactId>myartifact</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<configuration>
<includeScope>runtime</includeScope>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>process-resources</phase>
<!-- <phase>package</phase> -->
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.3</version>
<configuration>
<classpathDependencyExcludes>
<classpathDependencyExclude>
${project.build.outputDirectory}
</classpathDependencyExclude>
</classpathDependencyExcludes>
<additionalClasspathElements>
<additionalClasspathElement>
${project.build.directory}/${project.build.finalName}.${project.packaging}
</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>
</plugins>
</build>
</project>
助けてくれてありがとう!