UtPlsql与Jenkins的结合

导读:本篇文章讲解 UtPlsql与Jenkins的结合,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

背景

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

UtPlsql与Jenkins的结合

第二步:命令行执行

  • 官网link: 里面有讲解ORACLE的UT怎么使用,以及如何使用命令行进行调用SqlDeveloper中的测试
  • Demo:

UtPlsql与Jenkins的结合

  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中有对应的一些语法使用,当然也可以直接调用方法查看使用的方式

UtPlsql与Jenkins的结合

UtPlsql与Jenkins的结合

  • run运行测试或套件,exp执行导出操作以及imp执行导入操作 
  • 在语法使用错误的时候,会出现正确的使用语法。下面的图片可以看到,我suite写成了suit。这里是因为不细心,导致踩得第一个坑!

UtPlsql与Jenkins的结合

 

第三步:搭建Jenkins

  • 这一步网上已经有很多资料了,这里就不赘述了。
  • 部分插件下载失败,可以选择手动下载和上传:Jenkins插件下载
  • 有一点要注意的是:win10的家庭版需要对应下载Docker Toolbox,踩得第二个坑 !

 

第四步:UtPlsql与Jenkins的结合

  • 遇到一个问题,使用Jenkins去运行脚本的时候,报错:Connection Not Found! 

UtPlsql与Jenkins的结合

 

UtPlsql与Jenkins的结合

 

具体原因还没有找到,网上似乎也没有人遇到同样的问题。假如哪位大神也遇到了这个问题并且解决了,请你一定要告诉我,谢谢! !!!!!!

我重新换了一台电脑进行测试,结果是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

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!