`
42087743
  • 浏览: 232076 次
  • 性别: Icon_minigender_1
  • 来自: 合肥&上海
社区版块
存档分类
最新评论

集成测试时使用独立的数据库

阅读更多
1. 需求:
引用
开发环境的db经常会出现错误数据的问题,原因是多方面的,例如程序自测时的bug,不规范的开发人员经常会手动更改db的数据等,所以单元测试和集成测试需要独立的db来避免由于错误数据造成的test failed的情况,或者是造成的偶然test success的情况


2. 思路
引用
单元测试需要在src/test/resources下建立db配置文件,测试时就不会再读取src/main/resources下的同名db配置文件
集成测试时会通过maven-jetty-plugin启动jetty,这时jetty运行的war需要到src/test/resources下读取db配置文件


3. 难点
引用
maven install也会运行verify,这时集成测试与install都使用dev_profile,也就是使用同一个db配置文件,如果因为集成测试而使用verify_profile,会造成install的war使用的是集成测试的db,无法deploy并交付测试
另外install无法只skip集成测试,它只允许skipTest,导致单元测试和集成测试都skip


4. 解决方案
<!-- maven-jetty-plugin增加配置useTestClasspath -->
<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>maven-jetty-plugin</artifactId>
				<version>6.1.26</version>
				<configuration>
					<scanIntervalSeconds>10</scanIntervalSeconds>
					<stopKey>stop-jetty-for-it</stopKey>
					<stopPort>9999</stopPort>
					<connectors>
						<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
							<port>8888</port>
							<maxIdleTime>60000</maxIdleTime>
						</connector>
					</connectors>
				</configuration>
				<executions>
					<execution>
						<id>start-jetty</id>
						<phase>pre-integration-test</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<scanIntervalSeconds>0</scanIntervalSeconds>
							<daemon>true</daemon>
							<reload>manual</reload>
							<!-- 使得集成测试使用src/test/resources的配置 -->
							<useTestClasspath>true</useTestClasspath>
						</configuration>
					</execution>
					<execution>
						<id>stop-jetty</id>
						<phase>post-integration-test</phase>
						<goals>
							<goal>stop</goal>
						</goals>
					</execution>
				</executions>
			</plugin>


5. 关于maven-jetty-plugin
引用
jetty6对应的是maven-jetty-plugin,jetty7+对应的则是jetty-maven-plugin,参数useTestClasspath也变为useTestScope
分享到:
评论

相关推荐

    集成测试计划模板

    集成测试计划 版本:V1.3 文 档 编 号 保 密 等 级 作 者 最后修改日期 审 核 人 最后审批日期 批 准 人 最后批准日期 修订记录 日期 版本 修订说明 修订人 目 录 ...

    18、测试环境下使用数据库1

    我们查看数据库,刷新,我们的测试数据库中也出现了三张表,测试环境下的数据库操作,我们需要使到Symfony的orm服务类,这就需要将Symfony的服务类集成到

    软件测试中数据库方面的测试

    对数据库进行的测试, 数据库系统测试的对\数据库设计是否与实现相同\数据库设计是否符合范式\数据库设计是否合理 经验 数据库安装、配置测试 ... 数据库集成测试对象 数据库的增删改操作 数据表加满等等 /

    数据库操作的单元测试

    3.3.3. 测试数据库的有效方法。 10 3.3.4. seed文件的设置 10 3.3.5. 一般的测试的步骤 11 4. 常见问题 1 4.1. DBUnit使用问题 1 4.1.1. 在运行测试用例的时候,出现org.dbunit.dataset.DataSetException: java.net....

    测试项目在数据库单元测试中的应用

    C#测试项目在数据库单元测试中的应用 通过一个C静测试项目的建立,介绍了数据库单元测试的编程思路及实现过程

    一款HTAP数据库基准测试工具,实现Hybench基准测试,集成测试数据集生成,HTAP负载运行、新鲜度度量、测试结果统计分析等

    Hybench是一款由中国软件评测中心、清华大学联合牵头,北京奥星贝斯科技有限公司、武汉达梦数据库股份...Hybench实现了Hybench基准测试,集成了测试数据集生成,HTAP负载运行、新鲜度度量、测试结果统计分析等多种功能

    数据库连接测试代码jdbc

    java web项目时可以在eclipse、myeclipse等集成环境中测试数据库是否连接正常,直接导入即可(默认端口3306,账号root,密码123456)

    基于XML和JAVA的异构数据库集成中间件系统的研究和实现

    (2)测试数据库数据格式说明 3.测试系统的设计和实现 (1)客户端 (2)服务器端 (3)数据字典的建立 (4)系统运作流程图 (5)系统运行界面 (6)查询速度测试 七、总结与展望 1.总结 2.展望 参考文献 致谢 攻读学位期间...

    对数据库进行测试的资料

    数据库单元,集成系统,代码功能,性能,安全测试

    spring集成测试工具的详细讲解

    下载后先建一个数据库,然后在test这个源文件下面去运行

    integresql:IntegreSQL管理隔离的PostgreSQL数据库以进行集成测试

    通过允许工程师使用真正的PostgreSQL测试数据库编写快速执行,并行和确定性的集成测试,对您的工程师有所帮助。 尽可能接近测试中的生活环境。 背景 我们走了很长一段路才能认识到,我们的PostgreSQL集成测试策略...

    springboot整合h2数据库实战

    springboot整合h2数据库实战,实现单元测试时与真实DB数据库解耦,h2实时建库建表

    数据库面试集成题目-针对测试

    测试人员面试常见的数据库面试题目,比如事务、日志等等。 没有DDL DML语句

    SpagoBI集成Hive数据库

    SpagoBI集成Hive数据库:此文档主要介绍集成步骤,不包含Hive数据库部分。在做集成时Hive数据库老是不稳定,导致报表出问题。针对这种情况小伙伴可以写个简单的JDBC连接 循环测试一下。

    Respawn:用于集成测试的智能数据库清理器

    重生 Respawn是一个小的实用程序,可帮助将测试数据库重置为干净状态。 Respawn不会在测试结束时删除数据或回滚事务,而是通过智能地从表中删除数据来。 要使用,请创建一个Checkpoint并使用要跳过的表或要保留/忽略...

    Spring Boot+Mybatis集成H2数据库示例

    内容概要:本指南介绍了如何在Spring Boot应用中集成Mybatis框架,并使用H2内存数据库作为数据存储方案。具体包括添加H2数据库依赖、配置Spring Boot的数据源连接信息、对Mybatis进行基本设置,以及如何初始化和操作...

    DatabaseApp:SQLite数据库的集成测试

    数据库应用 SQLite数据库的集成测试

    Android集成测试

    Android集成测试主要是在单元测试的基础上测试接口访问或者异步任务是否正确,在移动凤巢系统中,  Android集成测试主要是在单元测试的基础上测试接口访问或者异步任务是否正确,在移动凤巢系统中,大概有30+个接口...

    集成测试用例设计的一些感悟

    集成测试用例设计的一些感悟 软件测试 集成测试又等于接口测试(个人认为),是在单元测试中的一个,可以认为是单元测试,又可认为是接口测试。 集成用例设计基于业务场景,其实说白了集成测试是按照详细设计来写的...

    20、继续修改集成测试代码1

    20、继续修改集成测试代码1

Global site tag (gtag.js) - Google Analytics