java – 使用不同的Spring属性进行集成测试
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用不同的Spring属性进行集成测试,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1913字,纯文字阅读大概需要3分钟。
内容图文
![java – 使用不同的Spring属性进行集成测试](/upload/InfoBanner/zyjiaocheng/798/62ad3a4c78434d2a8d4e84dd6f29739a.jpg)
我正在使用Selenium测试一个使用Spring开发的Web应用程序来检查Web应用程序是否为用户显示了正确的内容,并且他能够执行规范中的所有操作.
其他开发人员正在使用内存中的假Hibernate数据库(HSQLDB)进行单元测试.显然,我必须使用程序使用的真实数据库进行测试. Spring应用程序上下文的JDBC参数由Spring在运行时加载(或编译时用于构建WAR文件). Spring使用org.springframework.beans.factory.config.PropertyPlaceholderConfigurer找到的属性来配置webapp和测试的应用程序上下文,并且测试和webapp共享XML配置文件.
根据Maven配置文件,单元测试或集成测试,属性需要不同.
我尝试了几种方法,没有成功:
>使用较低级别的SQL查询开发自己的DAO.这是浪费时间和最后的解决方案.由于外键约束和数据库模型的更改,并且鉴于应用程序具有非常可靠(经过单元测试)的DAO集,因此它确实是最愚蠢的选择.
>使用Maven过滤器并在那里定义JDBC属性.问题是属性在主应用程序和单元测试之间共享,因为tomcat:redeploy目标包括单元测试.然后应用程序无法连接到真正的数据库.
>在不同文件夹中具有不同的属性. Spring根本不关心配置文件的Surefire配置中定义的额外资源,无论是使用testResources还是资源.奇怪的是,这种方法非常适合为主应用程序中的每个环境提供不同的JDBC参数.我们在src / main / resources中有几个文件夹,其中包含覆盖src / main / resources中默认属性的属性.它对src / test / resources的工作方式不同.我甚至不知道如何找到这种行为的原因.
>让Spring根据用户定义的Maven参数加载不同的属性文件.相同的属性用于主应用程序和单元测试.当它无法找到属性文件时,Spring也会抱怨(强迫我创建带有空文件的目录只是为了让构建完成).
为什么当前的构建配置与开发人员配置文件(开发人员,测试服务器……)同时激活测试配置文件(单元测??试)并且属性不会相互覆盖?因为Maven会在启动单元测试时使Spring查看src / test / resources,并在启动构建目标时查看src / main / resources.不幸的是,没有像这样的集成测试的默认配置.
解决方法:
我们这样做的方法是根据变量选择属性文件,因此spring中的属性占位符如下所示:
<context:property-placeholder location="classpath:db.${TARGET_ENV}.properties" />
然后您可以选择将TARGET_ENV定义为环境变量,或者使用-DTARGET_ENV =将其传递给maven …
内容总结
以上是互联网集市为您收集整理的java – 使用不同的Spring属性进行集成测试全部内容,希望文章能够帮你解决java – 使用不同的Spring属性进行集成测试所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。