問題は、統合テストにさまざまなプロパティファイルをどのように使用できるかということです。詳細な説明は次のとおりです。
を使用して、Mavenとのコンテナー統合テストを実行しようとしていますtomcat7-maven-plugin
。プロジェクトはSpringとJPAを使用します。現在、私が理解しているのは次のとおりです。
- 単体テストのクラス名はパターンに従います*テストして実行
mvn test
するmaven-surefire-plugin
- 統合テストのクラス名は、パターン* ITに従い、によって実行さ
mvn verify
れます。maven-failsafe-plugin
- 実行すると、Tomcatを開始および停止し、warファイルをデプロイするようにトリガーできます
mvn verify
これはすべて機能し、 Tomcatを実行すると起動します。
ただし、通常のデータベースを使用する代わりに、インメモリデータベースを使用したいと思います。私のデータベース構成は、src/main/resources/META-INF/spring/database.properties
を介してロードされたファイルで定義されていますcontext:property-placeholder
。
で代替ファイルを定義しようとしましsrc/test/resources/META-INF/spring/database.properties
たが、無視されます。内でシステムプロパティを定義できることは知っていますtomcat7-maven-plugin
が、それらを使用してさまざまなプロパティファイルの読み込みをトリガーする方法がわかりません。
私のtomcat7-maven-plugin
構成は次のとおりです。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>9090</port>
<path>/processing</path>
<useTestClasspath>true</useTestClasspath>
<systemProperties>
<example.value.1>alpha</example.value.1>
</systemProperties>
</configuration>
<executions>
<execution>
<id>start-tomcat</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run-war-only</goal>
</goals>
<configuration>
<fork>true</fork>
</configuration>
</execution>
<execution>
<id>stop-tomcat</id>
<phase>post-integration-test</phase>
<goals>
<goal>shutdown</goal>
</goals>
</execution>
</executions>
</plugin>
プロパティはcontext-main.xml
、次の行で読み込まれます。
<context:property-placeholder location="classpath*:META-INF/spring/*.properties"/>
web.xml
以下からコンテキスト構成をロードします。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:META-INF/spring/context-*.xml</param-value>
</context-param>
テスト用に代替プロパティファイルをロードする方法について何か提案はありますか?