看到一篇文章,后续工作可能会用到,转载并记录如下,原文链接:RT-Thread上使用utest+jenkins实现持续集成和自动化测试 - 掘金 (juejin.cn)
前情提要: 随着模块越来越多,测试维护成本越来越高,实现自动化便提上日程,网上关于嵌入式软件的持续集成和自动化测试的资料较少,utest是RTThread自带的测试框架,也没有接入jenkins,也没有测试报告,所以很多地方需要自己再做处理。本文记录了笔者搭建测试框架中详细的实现过程、踩过的坑和解决方法以及一些思考。
环境:RT-Thread、SCons、qemu、jenkins、utest
1. 使用jenkins实现持续集成
持续集成( Continuous integration ,简称 CI)指的是,频繁地将代码集成到主干。
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前必须通过自动化测试。只要有一个测试用例失败,就不能集成。
先新建一个jenkins的任务,再一个个解决问题
新建任务
构建一个自由风格的软件项目(或者可以拷贝一个scm的项目)
general和源码管理可以根据实际情况配置
构建触发器可选择定时构建或者gitlab/gerrit来触发,或者多选也可以
上图示意为周一到周五22:00定时构建
接下来build step和构建后操作就是重头戏了
build step
选择执行shell脚本
脚本内容分为几步:
- 获取开发代码
- 获取测试代码,以及mock服务
- 编译运行
- 生成html格式的测试结果报告
构建后操作
- 发布HTML reports
- 发送邮件通知
2. 问题解决
问题一:怎样执行用例
我们平时都是在整个系统编译运行之后,进入msh命令行界面进行交互,输入“utest_list","utest_run"分别查看测试用例和运行测试用例
第一个办法的灵感来源于rtthread的源码,里面找到一个utest自动化机器人,是通过python函数将命令传入
最终采用的解决方法:在/board/vexpress/arm-a9/applications/main.c中加上
#include <msh.h>
#include <finsh.h> //main函数中加入:
msh_exec("utest_run",11);
问题二:怎样结束进程
utest执行完,结束qemu是用的ctrl+A,然后再输入X,这里怎么结束进程呢
是这个问题想了我一个下午,一直没有搜到怎样退出,后来想明白了,自己怎么能结束自己呢,必须得要从外部来实现,然后碰巧看到一篇帖子求助怎么退出qemu的,