背景
我的工作中经常使用的ORACLE的存储过程,因为公司对质量特别的重视,所以也运用了ORACLE自带的Unit Test,同时也将它和Jenkins进行了结合。之前的平台是同事搭建好的,作为使用者,都是一知半解。
因为近期要对ORACLE的Unit Test作为一个topic进行分享,想要把UT和Jenkins的结合也顺带一起讲了,所以需要自己搭建一个环境来熟悉一下。
而且我发现国内好少这方面的资料,虽然存储过程似乎用的不多,但是这资料也太少了点吧。
整体流程
- 建表 – 创建存储过程 – 创建存储过程对应的UT
- 了解如何使用命令行调用SqlDeveloper的UT以及生成Report
- 搭建本地的Jenkins
- UtPlsql与Jenkins的结合
第一步:建表 – 创建存储过程 – 创建存储过程对应的UT
-- 简单的一张STUDENT表
CREATE TABLE "DWAYNE"."STUDENT"
( "ID" NUMBER NOT NULL ENABLE,
"NAME" VARCHAR2(20 BYTE),
"AGE" VARCHAR2(20 BYTE),
CONSTRAINT "STUDENT_PK" PRIMARY KEY ("ID")
);
--存储过程
create or replace PACKAGE BODY LOCAL_UT_REPOS_CLEAN_TEST_PKG AS
PROCEDURE PROC_INSERT_STU(P_STU_NAME IN VARCHAR2,P_STU_AGE IN NUMBER)
AS
BEGIN
INSERT INTO STUDENT (ID,NAME,AGE) VALUES (SEQ_STU.NEXTVAL,P_STU_NAME,P_STU_AGE);
COMMIT;
END PROC_INSERT_STU;
PROCEDURE PROC_UPDATE_STU (P_STU_ID IN NUMBER,P_STU_NAME IN VARCHAR2,P_STU_AGE IN NUMBER)
AS
BEGIN
UPDATE STUDENT STU SET STU.NAME = P_STU_NAME , STU.AGE = P_STU_AGE WHERE ID = P_STU_ID;
COMMIT;
END PROC_UPDATE_STU;
END LOCAL_UT_REPOS_CLEAN_TEST_PKG;
第二步:命令行执行
- 官网link: 里面有讲解ORACLE的UT怎么使用,以及如何使用命令行进行调用SqlDeveloper中的测试
- Demo:
- 进入SqlDeveloper对应的目录下的bin文件夹,其中比较关键的文件:sdcli、sdcli64,也是它们提供的“接口”,让我们可以使用对应的命令行。
- sdcli64 unittest -run -suite -name SuiteName -repo collectionName -db collectionName -> 执行Suite的测试
- sdcli64 unittest -exp -suite -name SuiteName -repo collectionName -file C:\Users\PVer\Desktop\test.xml -> 生成对应的测试结果Report
- 在上面的link中有对应的一些语法使用,当然也可以直接调用方法查看使用的方式
run
运行测试或套件,exp
执行导出操作以及imp
执行导入操作- 在语法使用错误的时候,会出现正确的使用语法。下面的图片可以看到,我suite写成了suit。这里是因为不细心,导致踩得第一个坑!
第三步:搭建Jenkins
- 这一步网上已经有很多资料了,这里就不赘述了。
- 部分插件下载失败,可以选择手动下载和上传:Jenkins插件下载
- 有一点要注意的是:win10的家庭版需要对应下载Docker Toolbox,踩得第二个坑 !
第四步:UtPlsql与Jenkins的结合
- 遇到一个问题,使用Jenkins去运行脚本的时候,报错:Connection Not Found!
具体原因还没有找到,网上似乎也没有人遇到同样的问题。假如哪位大神也遇到了这个问题并且解决了,请你一定要告诉我,谢谢! !!!!!!
我重新换了一台电脑进行测试,结果是OK的,附上对应pipeline script
- 代码中的SuitName,就是SqlDeveloper中Unit Test的Suite名称。ConnectionName就是连接DB时,你自定义的名称。ReportName,就是你想要生成report的名字。路径是放在Jenkins对应的workspace中。
node {
stage('Executing plsql unittest') {
bat 'D:/sqldeveloper/sqldeveloper/bin/sdcli64 unittest -run -suite -name SuiteName -repo ConnectionName -db ConnectionName'
}
stage('Generating report') {
bat 'D:/sqldeveloper/sqldeveloper/bin/sdcli64 unittest -exp -suite -name SuiteName -repo ConnectionName -file D:/***/jenkins/workspace/IRIS4_ARP_MAPPER_PLSQL_UT/ReportName.xml'
}
stage('Publish JUnit Report') {
junit allowEmptyResults: true, testResults: 'ReportName.xml'
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/77929.html