测试spring测试管理事务
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于测试spring测试管理事务内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在测试spring测试管理事务相关知识领域提供全面立体的资料补充。同时还包含 c string、c 编程、c 程序设计 的知识内容,欢迎查阅!
测试spring测试管理事务相关知识
-
如何管理测试项目?前言 面试过几个应聘测试主管的应聘者,问到一个问题“你会如何接手一个新测试项目,你首先会做什么事,问哪些问题?” 得到的答案几乎千篇一律:了解需求,做计划,然后设计用例,执行用例,最后提交报告……这样的答案,不能说错,但却不是我想听的。我希望听到一些不一样的东西,准确的说是应聘者自己总结和思考过的东西。 今天分享的主题是如何管理一个测试项目,对回答这个问题有借鉴意义。 管理一个测试项目大致可以分为事前、事中、事后三个阶段,从接到测试通知到完成测试计划为事前,从完成测试计划到完成测试报告为事中,完成测试报告往后是事后。今天主讲事前和事中,内容主要是各阶段工作的重点,需要做的准备(需了解的信息),常见的问题等。事前 接手一个新测试项目以后,我首先会用一段时间来了解团队(这点很重要),学
-
客户实践| Jira 在大型测试管理团队中的测试管理解决方案 | IDCF内容来源于:Atlassian速递 作者:杨刚 杨刚,烽火通信科技股份有限公司信息化中心测试电子信息平台项目经理,负责烽火通信测试端到端管理平台建设,在系统集成平台开发方面有多年丰富的管理和实施经验。 本文从研发测试核心需求和业务痛点出发,讲述烽火通信研发测试业务如何实现端到端拉通管理,以及如何以 Jira Software 为基础和核心,通过不断实践终使信息化在企业内部落地的历程。 一、背景概述 Jira Software 作为业界标杆的项目与事务跟踪工具,被广泛应
-
好的测试数据管理,到底要怎么做?你的组织是否实施了测试数据管理?如果你的组织处理关键或敏感的业务数据,测试数据管理肯定会让组织受益。与测试数据相关的问题占所有软件缺陷的 15%,这一事实强调了测试数据的重要性。本文将准确讨论测试数据经理职责、测试数据经理需要什么技能、以及雇佣测试数据经理的好处。 什么是测试数据管理?让我们首先深入了解测试数据管理 (TDM)的定义,管理满足自动化测试要求所需的数据的过程称为测试数据管理。测试数据经理可以使用测试数据管理解决方案来根据测试的需要创建测试数据。测试数据管理解决方案必须确保它只提供高质量的数据。质量差的数据比完全没有数据更糟,低质量的数据可能会产生不可信的错误结果。保真度是测试数据的另一个重要要求:测试数据必须尽可能接近真实生产数据。测试数据经理的工作职责测试数据经理的主要职责之一是制定和执行组织的企业测试数据管理长期战略。此外,测试数据经理负责测试相关任务的估算、测试需求的分析、支持工具的设计和开发、测试以及TDM流程和解决方案的实施。测试数据经理创建的流程既一致又可重复,以支持多种功能。
-
微服务的测试测试00 测试概述软件测试的目的是,保证程序员编写的程序达到他的预期结果,保证发布的产品是产品经理(产品设计人员)的真实意愿表现。这些都需要软件测试来监督实现,避免将有缺陷的软件发布到生产环境。软件测试种类有很多,粗略的划分为:单元测试、集成测试、端到端测试。从其他的角度来说,又有回归测试、自动化测试、性能测试等。当我们项目进行服务化改造之后,尤其是进行了微服务设计之后,测试的工作就更加困难了。很多项目都是以独立服务的形式发布的,这些服务的发布怎么能保证是进行了充分测试了的?测试的入口应该是哪里?是直接进行集成测试,还是做端到端的用户体验测试,好像都不太合适。按照分层测试的思想,于是就有服务测试的话题。服务的测试理论和其他的测试应该是大体类似的,其中比较特殊的是,如何提供方便快捷的服务测试入口。01 微服务测试目前常见的微服务设计都是会采用一些分布式服务框架,这些框架从通信协议上分有两种:公共标准的HTTP协议的;基于私有的RPC调用协议。第一种http协议的微服务接口,比如使用spring boot开发的
测试spring测试管理事务相关课程
测试spring测试管理事务相关教程
- 5.4 测试分布式事务 在测试方法上添加 @Transactional 开启事务,然后在两个数据源操作中间模拟抛出异常。实例: /** * 插入测试 */ @Test @Transactional // 开启事务 void testInsert() { // 数据源1插入数据 OrderDo order = new OrderDo(); order.setCount(1L); order.setGoodsId(1L); int affectRows1 = orderDao.insert(order); // 模拟抛出异常 int a = 1 / 0; // 数据源2插入数据 ErpOrderDo erpOrder = new ErpOrderDo(); erpOrder.setCount(order.getCount()); erpOrder.setGoodsId(order.getGoodsId()); erpOrder.setOutId(order.getId()); int affectRows2 = erpOrderDao.insert(erpOrder); assertEquals(1, affectRows1); assertEquals(1, affectRows2); }此时运行测试类,可以发现数据源 1 的事务已回滚,验证成功!Tips:如果运行测试类报错 master..xp_sqljdbc_xa_init_ex 相关信息,是 SQL Server 默认配置不支持分布式事务问题,可查询相关资料解决该问题。
- 2.5 测试 为了充分理解缓存的含义,我们通过测试类发起测试。实例:@SpringBootTestclass SpringBootCacheApplicationTests { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private CacheManager cacheManager; @Autowired private GoodsService goodsService; // 显示当前使用的缓存管理器类型 @Test void showCacheManager() { // 输出:org.springframework.cache.concurrent.ConcurrentMapCacheManager logger.info(cacheManager.getClass().toString()); } // 缓存测试 @Test void cacheTest() { // 第一次执行,没有缓存,执行方法体 goodsService.getById(1L); // 再次执行,直接取出缓存,不执行方法体 goodsService.getById(1L); // 移除缓存 goodsService.remove(1L); // 再次执行,已经没有对应缓存,所以执行方法体 GoodsDo oldGoods = goodsService.getById(1L); // 打印缓存内容 logger.info("old goods id:{} name:{}", oldGoods.getId(), oldGoods.getName()); // 更新缓存 GoodsDo temp = new GoodsDo(); temp.setId(1L); temp.setName("新的商品"); goodsService.edit(temp); // 查询并打印已更新的缓存内容 GoodsDo newGoods = goodsService.getById(1L); logger.info("new goods id:{} name:{}", newGoods.getId(), newGoods.getName()); }}我们查看下控制台输出如下,验证了我们设计的缓存机制。使用 Spring Boot 默认缓存时控制台输出内容
- 3.6 测试 测试类代码同 spring-boot-hikari 一致,运行测试类后,结果如下:use time:1428mscom.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceWrapper
- 2.6 测试 通过测试类发起测试,此处我们简单执行 1000 次插入,看看执行时间。需要注意的是,Spring Boot 进行测试时,需要添加注解 @SpringBootTest 。添加注解后该类可以直接通过 @Test 标注的方法发起单元测试,容器环境都已准备好,非常方便。实例:@SpringBootTest // 通过该注解,开启测试类功能,当测试方法启动时,启动了Spring容器class SpringBootHikariApplicationTests { @Autowired private DataSource dataSource;// 自动注入数据源 @Autowired private GoodsDao goodsDao; /** * 打印数据源信息 */ @Test // 测试方法 void printDataSource() { System.out.println(dataSource); } /** * 批量插入测试 */ @Test void insertBatch() { // 开始时间 long startTime = System.currentTimeMillis(); // 执行1000次插入 GoodsDo goods = new GoodsDo(); goods.setName("测试"); goods.setPic("测试图片"); goods.setPrice("1.0"); for (int i = 0; i < 1000; i++) { goodsDao.insert(goods); } // 输出操作时间 System.out.println("use time:" + (System.currentTimeMillis() - startTime)+"ms"); }}输出结果如下,可见默认数据源类型为 HikariDataSource ,插入 1000 条数据的时间大概为 1500ms (注意时间可能跟电脑性能等很多因素相关,此处只是进行简单的对比测试)。use time:1518mscom.zaxxer.hikari.HikariDataSource
- 5. 测试 我们直接编写测试类,对数据访问接口进行测试。此处通过 @FixMethodOrder(MethodSorters.NAME_ASCENDING) 注解,使测试方法按名称顺序依次执行。这样就可以一次性测试 GoodsDao 中的所有方法了,具体测试代码如下:实例:/** * GoodsDao测试类 */@SpringBootTest@FixMethodOrder(MethodSorters.NAME_ASCENDING) // 按方法名称顺序测试class GoodsDaoTest { @Autowired private GoodsDao goodsDao; /** * 新增一个商品 */ @Test void test_01() { GoodsDo goods = new GoodsDo(); goods.setName("手机"); goods.setPic("phone.jpg"); goods.setPrice("2000"); int count = goodsDao.insert(goods); assertEquals(1, count);// count值为1则测试通过 } /** * 更新商品信息 */ @Test void test_02() { GoodsDo goods = new GoodsDo(); goods.setId(1L); goods.setName("手机"); goods.setPic("phone.jpg"); goods.setPrice("3000"); int count = goodsDao.update(goods); assertEquals(1, count);// count值为1则测试通过 } /** * 获取商品信息 */ @Test void test_03() { GoodsDo goods = goodsDao.selectOne(1L); assertNotNull(goods);// goods不为null则测试通过 } /** * 删除商品 */ @Test void test_04() { int count = goodsDao.deletex(1L);//此处应为delete(1L) assertEquals(1, count);// count值为1则测试通过 } /** * 获取商品信息列表 */ @Test void test_05() { List<GoodsDo> goodsList = goodsDao.selectAll(); assertEquals(0, goodsList.size());// goodsList.size()值为0则测试通过 }}测试结果如下,说明所有测试都通过了。JUnit 测试结果
- 4. 测试 我们主要是测试 JPA 模块正确可用,所以直接在测试类发起对 IGoodsDao 方法的测试即可。
测试spring测试管理事务相关搜索
-
c 正则表达式
c string
c 编程
c 程序设计
c 程序设计教程
c 多线程编程
c 教程
c 数组
c 委托
c 下载
c 线程
c 语言
caidan
cakephp
call
calloc
calu
camera
caption
case语句