问题是如何使用不同的属性文件进行集成测试。详细说明如下。
我正在尝试使用 Maven 进行容器集成测试,使用tomcat7-maven-plugin
. 该项目使用 Spring 和 JPA。目前我想出的是以下几点:
- 单元测试类名称遵循模式 *Test and run with
mvn test
bymaven-surefire-plugin
- 集成测试类名称遵循 *IT 模式并使用
mvn verify
bymaven-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>
关于如何加载替代属性文件进行测试的任何建议?