`
42087743
  • 浏览: 236536 次
  • 性别: 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
分享到:
评论

相关推荐

    系统集成测试计划 实例

    在进行系统集成测试时,需要对数据库服务器进行测试,以确保数据库服务器能够正确地与其他组件集成。 5.2.3 集成应用服务器 在进行系统集成测试时,需要对应用服务器进行测试,以确保应用服务器能够正确地与其他...

    系统集成测试报告

    ### 系统集成测试报告知识点解析 #### 一、系统集成测试报告概述 **系统集成测试**是一项重要的软件质量保证活动,旨在验证不同模块或组件之间的集成是否符合预期的功能和性能要求。它不仅关注单个模块的行为,还...

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

    本节将详细介绍如何在测试环境下使用数据库,以及如何进行数据库的操作和集成测试。 首先,Symfony的ORM组件(Object-Relational Mapping)为我们提供了方便的数据库操作命令行工具。通过执行`symfony console list...

    数据库测试程序测试数据库

    - 集成测试:测试数据库与其他系统组件(如应用程序)的交互。 - 压力测试:模拟大量并发用户,检查数据库的负载承受能力。 - 回归测试:在数据库更新后,确保原有的功能没有受到影响。 3. **测试工具**: - ...

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

    测试项目通常使用Visual Studio等集成开发环境(IDE)进行创建和管理,比如文中提到的VS2005版本。通过IDE提供的单元测试框架,可以方便地编写测试代码,并在不同的测试用例中重复使用。 数据库单元测试的实施过程...

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

    在集成测试中,我们可能不希望真正调用数据库或者外部服务,这时可以使用Mockito来模拟这些依赖,确保测试的隔离性和效率。 在实际操作中,我们通常会先建立一个数据库用于测试,这个数据库可以是与生产环境完全...

    springcloud集成flowable6.5.0适配达梦数据库的模块

    4. 启动流程引擎:在Spring Boot启动时,通过配置类启动Flowable的流程引擎,这样在应用启动后就可以使用Flowable的各种服务了。 5. 集成Actuator:为了监控流程实例的运行状态,可以考虑集成Spring Boot Actuator...

    数据库测试概述-数据库测试入门资料

    2. **集成测试阶段**:此阶段主要关注接口测试。这包括数据项的修改、增加、删除操作,以及数据表的并发操作等。对于存储过程和关联表的操作也要进行测试。 3. **系统测试阶段**:这一阶段对测试人员提出了更高的...

    flowable集成达梦8数据库

    10. **持续集成与部署**:将集成后的项目纳入持续集成/持续部署(CI/CD)流程,确保每次代码变更后都能自动构建并测试,保证集成的稳定性。 以上就是集成Flowable与达梦8数据库所需的主要知识点。通过这个过程,你...

    Spring中进行集成测试

    在进行Spring集成测试时,重要的是要确保测试环境尽可能接近生产环境,但又不会受到生产数据或复杂性的干扰。理解并熟练运用上述知识点,可以有效地提高测试覆盖率,保证代码质量,并加速软件开发的迭代流程。

    绩效管理系统-系统集成测试计划(模板).doc

    通过对集成测试的目的、背景、系统集成及验证、集成范围、集成过程、集成客户端、集成数据库服务器、集成应用服务器和集成验证的了解,我们可以更好地理解绩效管理系统集成测试的重要性和必要性。

    数据库测试PPT教案.pptx

    首先,从测试过程的角度,数据库测试可分为系统测试、集成测试和单元测试。系统测试是对整个数据库系统的全面验证,确保它能与其它系统组件协同工作;集成测试关注数据库与其他模块的交互,确保数据流动的正确性;...

    数据库测试

    2. **集成测试**:当多个数据库组件一起工作时,需要进行集成测试,以检查它们之间的交互是否正常。这可能涉及数据同步、触发器、约束和复杂业务逻辑的验证。 3. **性能测试**:数据库测试还包括评估查询性能,通过...

    安卓android利用测试类操作数据库

    在测试数据库操作时,我们可以使用`@Rule`注解配合`SqliteInMemoryDatabaseRule`或`@嵌入式SQLite数据库`来创建临时的内存数据库,这样可以避免影响到实际应用的数据。 4. **Espresso和Mockito集成** 对于UI测试,...

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

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

    数据库测试的思路和方法

    集成测试主要关注数据库中各组件之间的交互,尤其是接口测试。具体的测试内容包括但不限于数据项的增删改查操作、数据表的增加与删除、并发操作等。这些测试可以通过等价类划分、边界值分析等方法来进行。 ##### 3....

    为Laravel测试提供快速的数据库迁移

    描述中提到,软件包可以获取 MySQL 数据库的快照,并将表结构导入到测试数据库。这样,测试环境就无需执行完整的迁移过程,而是直接使用先前保存的数据库状态,大大缩短了测试准备时间。这种方法对于频繁修改数据库...

Global site tag (gtag.js) - Google Analytics