Allure对单测结果以及robotframework结果的处理 Allure只能针对pytest的单测结果生成相应的报告: 如果需要对unittest的测试框架结果进行展示,可以使用pytest执行unittest测试用例,生成allure测试报告. Allure处理robotframework框架的测试用例 解决办法: 直接在运行root测试用例的时候,添加参数,然后使用allure直接生成HTML测试报告.参考链接:https://www.jianshu.com/p/6a383723204…
Java 在单测的时候 需要做回滚 设置如下: 需要添加以下 注解 在类上 defaultRollback = true : 为 默认全部回滚 defaultRollback = false : 为 不回滚, 个别方法需要回滚的话, 需要在类上 增加 注解: @Rollback(true) 即可单个方法回滚 . @Transactional("obJpaTransactionManager") @TransactionConfiguration(transactionManager =…
当无法避免做一件事时,那就让它变得更简单. 概述 单测是规范的软件开发流程中的必不可少的环节之一.再伟大的程序员也难以避免自己不犯错,不写出有BUG的程序.单测就是用来检测BUG的.Java阵营中,JUnit和TestNG是两个知名的单测框架.不过,用Java写单测实在是很繁琐.本文介绍使用Groovy+Spock轻松写出更简洁的单测. Spock是基于JUnit的单测框架,提供一些更好的语法,结合Groovy语言,可以写出更为简洁的单测.Spock介绍请自己去维基,本文不多言.下面给出一些示例…
概述 单测是提升软件质量的有力手段.然而,由于编程语言上的支持不力,以及一些不好的编程习惯,导致编写单测很困难. 最容易理解最容易编写的单测,莫过于独立函数的单测.所谓独立函数,就是只依赖于传入的参数,不修改任何外部状态的函数.指定输入,就能确定地输出相应的结果.运行任意次,都是一样的.在函数式编程中,有一个特别的术语:"引用透明性",也就是说,可以使用函数的返回值彻底地替代函数调用本身.独立函数常见于工具类及工具方法. 不过,现实常常没有这么美好.应用要读取外部配置,要依赖外部服务获…
目标 在<使用Groovy+Spock轻松写出更简洁的单测> 一文中,讲解了如何使用 Groovy + Spock 写出简洁易懂的单测. 对于相对简单的无外部服务依赖型函数,通常可以使用 expect-where 的形式. 本文尝试自动生成无外部服务依赖型函数的Spock单测模板,减少编写大量单测的重复工作量,只需要构造相应的测试数据集即可. 分析与思路 首先,需要仔细分析下无外部服务依赖型函数的Spock单测模板的组成. 比如 class BinarySearchTest extends S…
之前用gtest写过很多c++的单测case, 对gtest的强大和灵活印象深刻:最近需要用ruby写一个小工具, 接触了下ruby, 写了代码就要写单测啊(好的单测确实对代码的健壮性和正确性保证上太重要了) 简单搜了下发现 单测是ruby的一部分, 而不像c++等要引用gtest等三方库,简单可依赖,  简单写个例子 代码: module Brtest class Myfile def write(theFile,theCont) _fileName=File.dirname(__FILE__…
0. 为什么人人都讨厌写单测 在之前的关于swagger文章里提到过,程序员最讨厌的两件事,一件是别人不写文档,另一件就是自己写文档.这里如果把文档换成单元测试也同样成立. 每个开发人员都明白单元测试的作用,也都知道代码覆盖率越高越好.高覆盖率的代码,相对来说出现 BUG 的概率就越低,在线上运行就越稳定,接的锅也就越少,就也不会害怕测试同事突然的关心. 既然这么多好处,为什么还会讨厌他呢?至少在我看来,单测有如下几点让我喜欢不起来的理由. 第一,要额外写很多很多的代码,一个高覆盖率的单测代码,…
前言: 昨天读到了一篇文章,讲的是TDD,即Test-Driven Development,测试驱动开发.大体意思是,它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行.这有助于编写简洁可用和高质量的代码,并加速开发过程. 初读之时,瞬间感受到了震撼,感觉和自己之前的开发流程全都不一样,之前是由始至终,而这种思想确实以终为始.后来一查这种思想早在前几年甚至前几十年就被提出了,进而被广泛运用到了敏捷开发中.看来是自己孤落寡闻了,于是我准备将这…
很多小伙伴所在的公司是基于Dubbo来构建技术栈的,日常开发中必不可少要写dubbo单测(单元测试),如果单测数据依赖已有的外部dubbo服务,一般是mock数据,如果数据比较复杂,其实mock数据也是一个不小的工作量.那有没有更好的单测方式来代替我们完成”mock“数据功能呢,这时可以借助dubbo telnet功能,获取真实数据用在单测中使用. 本文会先讨论如何使用基于dubbo telnet的代理工具类(DubboTelnetProxy),然后再讨论下mockito+DubboTelnet…
H2数据库用来做单测数据库,可以自定义初始化数据,不用担心数据库内容更改造成单测跑不过问题,不过H2数据库跟实际使用的Mysql还是有一定区别. 1. H2数据库不支持Mysql的批量更新功能,支持批量插入 --批量更新(H2不支持) <update id="increaseBatch" parameterType="java.util.List"> <foreach collection="list" item="i…
JaCoCo介绍 一.JaCoCo简述 JaCoCo是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant.Maven中:可以作为Eclipse插件,可以使用其JavaAgent技术监控Java程序等等. 很多第三方的工具提供了对JaCoCo的集成,如sonar.Jenkins等. JaCoCo包含了多种尺度的覆盖率计数器,包含指令级覆盖(Instructions,C0coverage),分支(Branches,C1coverage).圈复杂度(Cyclomati…
使用synchronized 处理并发 缺点:无法做到细粒度控制 只适合单点的情况 使用Redis作为分布式锁 setnx命令 设计模式 :使用 !setnx 加锁 getset命令…
转载:https://blog.csdn.net/paincupid/article/details/53561435 1.引入mockito jar包 <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>2.0.2-beta</version> </dependency> 2.对于M…
mockMvc执行流程总结: 整个过程:1.mockMvc.perform执行一个请求:2.MockMvcRequestBuilders.get("/user/1")构造一个请求3.ResultActions.andExpect添加执行完成后的断言4.ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息.5.ResultActions.andReturn表示执行完成…
今天在调试一个UT job的时候发现找不到cobertural报告文件,后来发现在Maven的自项目里找到了对应的代码覆盖率报告,但都是是分散在每个子项目下面的,看起来很不方便.就在想是不是可以把这些报告都汇集到一起呢?结果还真是被我在stackoverflow里找到了.下面是原帖内容,我就一并粘过来吧: The plugin has been updated since this question was asked (and last answered) to now enable aggr…
一.jacoco 简介 jacoco 是一个开源的覆盖率工具,它针对的开发语言是 java.其使用方法很灵活,可以嵌入到 ant.maven 中:可以作为 Eclipse 插件:可以作为 javaAgent 探针监控 java 程序等等. 很多第三方的工具提供了对 jacoco 的集成,如 sonar.jenkins 等等. jacoco 包含了多种尺度的覆盖率计数器,包含指令级覆盖(Instructions,C0coverage).分支覆盖(Branches,C1coverage).圈复杂度(…
鸡尾酒 Mockito是Java的单元测试Mock框架. 它的logo是一杯古巴最著名的鸡尾酒Mojito, Mojito鸡尾酒,源自古巴的哈瓦那,带有浓厚的加勒比海风情. 并不浓烈,但是喝一杯下去,脸上会泛起红晕,象少女的羞涩.味道很清新,有一点青涩.有点甜蜜. 巧的是,我才发现周董的新歌,也叫<Mojito>.哈哈哈. Stub & Mock Stub和Mock是Test Double类型中的2种.Test Double一共有5种类型,Dummy,Stub,Spy,Mock,Fak…
目录 MockMvc 注意点 code 待测试的controller 测试类 github MockMvc 注意点 1.通过spring上下文获取mockmvc对象 @BeforeEach public void setup() { mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); } 2.json处理 通过MockMvc发送和接受请求都是json. 所以发送请求的时候,需要将javabean…
1. 单测 + 压测 压测 go test -bench=. -benchmem 单元测试 go test -v . 2. pprof + 火焰图(查看cpu占用,内存占用) 嵌入代码 import ( rawhttp "net/http" _ "net/http/pprof" ) func init(){ if conf.GetConfig().GetEnv() != "prod" { go func() { rawhttp.ListenAnd…
Fixture:进行测试前的准备工作和测试后的清理操作.例如创建临时或是代理数据库,目录,服务进程等.用例(Case):最小的测试单元,检车特定输入的响应.TestCase作为所有用例的基类,测试case需要继承它.套件(Suite):测试用例或者套件的集合.需要一直执行的用例采用套件组合到一起.运行器(Runner):编排和执行测试用例,并将测试结果反馈给用户.运行器可以使用图形化界面,也可以使用文本,或者返回特殊值来标识测试结果. cmd下:python -m unittest --help…
目录 堪比JMeter的.Net压测工具 - Crank 入门篇 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识bombardier 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk.wrk2 堪比JMeter的.Net压测工具 - Crank 实战篇 - 接口以及场景压测 堪比JMeter的.Net压测工具 - Crank 实战篇 - 收集诊断跟踪信息与如何分析瓶颈 堪比…
今天组里的小伙伴问了我一个问题:“我这里有一个底层驱动的接口,我想在测试它的时候加上超时限制,时间一过就fail掉它,执行后面的测试用例.怎么办到呢?”.我问:“它自己没有超时响应的机制么? 超时抛exception或者返回错误提示什么的?”,小伙伴回答是“好像没有.” 我接着问: “这个接口是做什么的,是核心交易么?” “算是吧,调用还挺频繁的.”小伙伴回答.“那这个接口决不能让它通过测试啊!”我大声回答,旁边n人侧目.“好吧.那我如何实现超时fail呢?” 小伙伴继续问...“呃...让我慢…
阿里妹导读:在欧洲中世纪的传说中,有一种叫“人狼”的妖怪,就是人面狼身.它们会讲人话,专在月圆之夜去袭击人类.而且传说中对“人狼”用一般的枪弹是不起作用的,普通子弹都伤不到也打不死它,只有一种用银子作成的特殊子弹才能把它杀死.Brooks在他最著名的随笔文章<No Silver Bullet>里引用了这个典故 ,说明在软件开发过程里是没有万能的终杀性武器的,只有各种方法综合运用,才是解决之道. 那么在软件研发过程中,哪怕没有银弹,如何用各种方法去解决这些“人狼”带来的威胁呢?阿里巴巴在多年的研…
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路线图,帮助新人尽快上手. 本文介绍的我所在小组的一些开发流程及相关工具.做为新人入门手册,其中某些工具可能只有我们这边在用,但对于其他公司的新人来说,一样是具有指导意义的. 2015.4.11 更新: 增加构建工具 Bazel, CMake介绍 增加Linux下任务管理相关命令 增加正则表达式调试的…
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文想介绍下自己在Java下做开发使用到的一些开源的优秀编程库,会不定期更新. 使用这些开源的类库,帮助非常大,能够节约你的宝贵时间,减少你出错的可能,让你把时间都集中在处理自己独特的业务逻辑上.同时可以多看看这些优秀的开源库,向他们学习,能够帮助你设计更好的API,让你的代码更易读,更整洁,更简单,因为这些API自身就是很好的例子. Guava Guava[ˈgwɑ…
注入Bean属性---构造注入配置方案 在Spring配置文件中通过<constructor-arg>元素为构造方法传参 注意: 1.一个<constructor-arg>元素表示构造方法的一个参数,且使用时不区分顺序. 2.通过<constructor-arg>元素的index 属性可以指定该参数的位置索引,位置从0 开始. 3.<constructor-arg>元素还提供了type 属性用来指定参数的类型,避免字符串和基本数据类型的混淆. 注入不同数据类…
一个很常见的问题,找出一个数组中和为给定值的两个数的下标.为了简单一般会注明解只有一个之类的. 最容易想到的方法是循环遍历,这里就不说了. 在JS中比较优雅的方式是利用JS的对象作为hash的方式: var twoSum = function(nums, target) { var hash = {}; var i; for (var i = 0; i < nums.length; i++ ) { if (typeof hash[nums[i]] !== "undefined")…
Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com 1. 相关概念 Jenkins Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的持续集成服务,可监控并触发持续重复的工作,具有开源,支持多平台和插件扩展,安装简单,界面化管理等特点.更多介绍参考维基介绍. Gitlab GitLab是一个利…
序言 今年的双十一对阿里巴巴中间件消息团队来说,注定是个不平凡的日子.在这一天,稳定性小组重点攻克的低延迟存储解决方案成功地经受住了大考.整个大促期间,99.996%的延迟落在了10ms以内,极个别由于GC引发的停顿在50ms以内,对于读写比例几乎均衡的分布式消息引擎来说,这一结果无不令人兴奋.甚至可以毫不夸张地讲,即便拿到明年的Java one大会上,也必定是场非常吸睛的技术干货分享.接下来,团队同学会把相关的经验提炼总结出来,期待能在接下来全球Qcon大会上为小伙伴们带去尽可能多的干货分享.…
注:本文英文原文在google开发者工具组的博客上[需要FQ],以下是我的翻译,欢迎转载,但请尊重作者版权,注名原文地址. 之前两篇文章分别介绍了Google 分布式软件构建系统Blaze相关的为了提供对存储在云端的源码的访问支持而定制的文件系统和构建系统是如何工作的.这篇文章在前两篇文章的基础之上介绍了一个在大规模集群上面分布式高效率执行构建步骤的系统[译者注:就是Blaze].正如你看到的,源文件系统和构建系统的细节对于我们实现快速高效的分布式构建是非常重要的.所以在介绍构建步骤如何分布式执…