首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

优雅解决外部依赖的UT问题Testcontainer

假如我想让我的产品UT覆盖率达到要求 >90%, 那么依赖组件的UT是非常麻烦的一件事情。...当然在不要求UT覆盖的的情况下,面向依赖的UT也应该是有价值的,是研发流程不可或缺的部分,不针对于中间件测试也会给我们代码留下足够多隐患。 为什么需要做依赖UT,Mock(绕过)不可以吗?...在没有合适的中间价UT方法,在UT环节我们大部分会使用Mock 方式对DAO层对gorm的使用进行绕过, 以MySQL为例我们做一个简单的demo。完整代码可通过github访问获取。...*dao.Repository).Select 方法的执行是ut无法覆盖到的。到这里就会有老铁有几个疑问。...这里我们通过init方法创建用于ut初始的mysql docker容器,并初始化全局DB连接。UT需要测试dao层时在import引入路径即可。其他团队开发者后期并不需要关注容器的创建。

27420

合格的后端Coder都应该写好UT和Mock测试

2 啥是 UT 单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。...3 为什么要写 UT 让你的代码质量更可靠&让你对代码结构更加敏感&迫使你写更优质的代码&… 4 为什么不写 UT !...${为什么要写 UT} 5 什么在阻止你写 UT 代码本身的原因 如果代码复杂度较高还缺少必要的抽象和拆分,就会让人对写 UT 望而生畏。...Java 如何写 UT Java 开发一般都是用 JUnit 或 TestNG,我们大多人还是使用 JUnit4。本文不讨论语法,只介绍一般性的使用规范。...这样的一个好处就是,如果哪天需要重构代码的实现,或者换一个算法实现某些方法,但功能不变的情况下,UT 是可以复用的。如果针对实现来测试,如果哪天要重构代码实现,那 UT 就会 fail 掉。

59810

渗透测试TIPS之删除、伪造Linux系统登录日志

前段时间NSA泄露的渗透测试工具中就有一款wtmp日志的擦除,非常好用,这引起了我的兴趣,于是研究了一下linux 登录相关二进制日志的文件格式,用python写了一个日志擦除,伪造的工具(末尾附源码)...Linux中与登录有关的日志及其格式分析 Linux中涉及到登录的二进制日志文件有 /var/run/utmp /var/log/wtmp /var/log/btmp.../var/log/lastlog 其中 utmp 对应w 和 who命令;wtmp 对应last命令;btmp对应lastb命令;lastlog 对应lastlog命令 经查Linux man 手册,...on Linux) */ #define RUN_LVL 1 /* Change in system run-level (see...的文件格式结构,挑几个重要的字段解释下 第1个字段7 表示这条记录类型,一般的用户正常登录记录类型都是7,错误登录是6 ,也就是btmp所记录的类型 第2个字段1497 是pid ,截图中我是用ssh远程登录linux

1.3K20

渗透测试TIPS之删除、伪造Linux系统登录日志

前段时间NSA泄露的渗透测试工具中就有一款wtmp日志的擦除,非常好用,这引起了我的兴趣,于是研究了一下linux 登录相关二进制日志的文件格式,用python写了一个日志擦除,伪造的工具(末尾附源码)...Linux中与登录有关的日志及其格式分析 Linux中涉及到登录的二进制日志文件有 /var/run/utmp /var/log/wtmp /var/log/btmp.../var/log/lastlog 其中 utmp 对应w 和 who命令; wtmp 对应last命令;btmp对应lastb命令;lastlog 对应lastlog命令 经查Linux man 手册,...的文件格式结构,挑几个重要的字段解释下 第1个字段7 表示这条记录类型,一般的用户正常登录记录类型都是7,错误登录是6 ,也就是btmp所记录的类型 第2个字段1497 是pid ,截图中我是用ssh远程登录linux...需要补充一点的是,目前还未实现根据时间区间来删除指定记录,也希望有兴趣的同学补充一下 参考: 1)https://linux.die.net/man/5/utmp 2)https://github.com

2.8K60

破译优利德旗舰万用表UT181A通讯协议

本文的破解/破译方法及结论应该适用于UT171系列;UT71系列也可以参考。对破译其它联机通讯的设备也有借鉴意义。...其实UT71系列也是类似的方案(HID转UART),只不过用的南京沁恒的模块。 找了一个CP2110的代码在Linux下试了下,可以对UT181A进行基本的连接设置。...图:通过HookAPI截获的API调用序列 CP211x SDK 发现CP211x的SDK里还提供了Linux版Library(-lslabhidtouart -lslabhiddevice)的源代码及例子...树莓派 在Debian系的Linux上(Ubuntu或树莓派),CP2110都被识别为HID设备,不需要安装驱动即可使用。...代码可以在Linux PC和树莓派上运行(理论上,也可以移植到Windows上)。 受硬件限制,不能设置非9600的波特率,所以不能提高传输速度。

1.8K80

记录一次mybatis缓存和事务传播行为导致ut挂的排查过程

记录一次mybatis缓存和事务传播行为导致ut挂的排查过程 起因 rhea项目有两个ut一直都是挂的,之前也经过几个同事排查过,但是都没有找到解决办法,慢慢的这个问题就搁置了。...testGetBGWechatAccountByOpenid这个ut的核心调用链如下 ?...并且有多处使用到了事务,其中BasePlatformUserService.insert这个方法用到了Propagation.REQUIRES_NEW,也就是图中最右边的这个链路中最终插入了一个PlatformUser ut...mybatis操作一定会开启新的Session 排查过程 确保mapper方法对应的sql是对的 将使用REQUIRES_NEW的方法改为默认的REQUIRED,发现能查询到platformUser 在ut...中使用其他方法查询插入的platformUser,发现能查询到 mybatis配置加上日志,debug发现ut中的查询platformUserMapper.getByOpenIdAndBG发现没有打印sql

55821

基于 hook 和 gmock 开展单元测试

(2)选用合适的测试框架 工欲善其事必先利其器,对UT而言也是如此。...目前该测试框架可以支持Windows、Linux以及Mac OSX平台。...总结,这两个测试框架都是基于Linux系统的hook技术,将hook和gmock完美结合,但是都依赖于Linux系统的底层库,需要特定版本的系统库。...五、UT和SDK测试的差异 (1)SDK测试的对象是公开的API,这些API有详细的接口说明文档。UT的测试对象是内部函数,这些函数没有任何文档,需要测试通过debug或者找开发咨询去了解。...UT不需要关心外部如何调,更加聚焦函数本身。 (4)数据构造,UT深入到函数内部,构造的数据不仅仅包含函数入参,还包含函数内部用到的一些数据。

5.2K30
领券