我正在使用Selenium测试一个使用Spring开发的Web应用程序,以检查Web应用程序是否为用户显示了正确的内容,并且他能够执行规范中的所有操作。
其他开发人员正在使用内存中的假Hibernate数据库(HSQLDB)进行单元测试。显然,我必须使用程序使用的真实数据库进行测试。 Spring应用程序上下文的JDBC参数由Spring在运行时加载(或编译时用于构建WAR文件)。 Spring使用org.springframework.beans.factory.config.PropertyPlaceholderConfigurer找到的属性来配置webapp和测试的应用程序上下文,XML配置文件由测试和webapp共享。
根据Maven配置文件,单元测试或集成测试,属性需要有所不同。
我尝试了几种方法,没有成功:
为什么当前的构建配置与开发人员配置文件(开发人员,测试服务器......)+测试配置文件(单元测试)同时运行且属性没有相互覆盖?因为Maven会在启动单元测试时使Spring查看src / test / resources,并在启动构建目标时查看src / main / resources。不幸的是,没有像这样的集成测试的默认配置。
答案 0 :(得分:5)
我们这样做的方法是根据变量选择属性文件,因此spring中的属性占位符看起来像这样:
<context:property-placeholder location="classpath:db.${TARGET_ENV}.properties" />
然后您可以选择将TARGET_ENV定义为环境变量,或者使用-DTARGET_ENV = ...将其传递给maven。