UtPlsql与Jenkins的结合

背景

我的工作中经常使用的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:

  1. 进入SqlDeveloper对应的目录下的bin文件夹,其中比较关键的文件:sdcli、sdcli64,也是它们提供的“接口”,让我们可以使用对应的命令行。
  2. sdcli64 unittest -run -suite -name SuiteName -repo collectionName -db collectionName -> 执行Suite的测试
  3. 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'
  }
  
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值