oracle – 有没有办法访问私人plsql程序进行测试?
发布时间:2020-12-12 13:52:18 所属栏目:百科 来源:网络整理
导读:我正在开发一个有很多plsql代码的项目,并希望在我们的代码库中添加更多的单元测试。我喜欢测试的一些程序/函数不在包规范中,我没有办法改变。 有没有办法访问这些“私有”plsql过程,而不添加到规范? 到目前为止,唯一的想法是在测试之前将数据库编译成一
我正在开发一个有很多plsql代码的项目,并希望在我们的代码库中添加更多的单元测试。我喜欢测试的一些程序/函数不在包规范中,我没有办法改变。
有没有办法访问这些“私有”plsql过程,而不添加到规范? 到目前为止,唯一的想法是在测试之前将数据库编译成一个特殊的包规范,指定了被测程序。我认为这样会工作,但是我想知道是否有一个更简单的方法,一些邪恶的秘密oracle黑客也许;-) 我使用JUnit / DBUnit从Java测试。 BR 正因为如此,我一直使用这个功能准确地公开了一个规范的私有包,所以我可以对它们运行UTPLSQL测试。 这里是特殊的语法: create or replace package my_pkg as $IF $$dev_env_test $THEN PROCEDURE private_proc; $END FUNCTION public_function return date; end my_pkg; / 具有双美元符号的变量是条件编译标志。 如果我描述包,我们只能看到公共包: SQL> desc my_pkg FUNCTION PUBLIC_FUNCTION RETURNS DATE SQL> 现在我设置条件标志并重新编译包,仿佛通过魔法… SQL> alter session set plsql_ccflags='dev_env_test:true' 2 / Session altered. SQL> alter package my_pkg compile 2 / Package altered. SQL> desc my_pkg PROCEDURE PRIVATE_PROC FUNCTION PUBLIC_FUNCTION RETURNS DATE SQL> 私有化功能就像你以为一样简单: SQL> alter session set plsql_ccflags='dev_env_test:false' 2 / Session altered. SQL> alter package my_pkg compile 2 / Package altered. SQL> desc my_pkg FUNCTION PUBLIC_FUNCTION RETURNS DATE SQL> 我们可以做更多的条件编译。它在文档中被覆盖。 Find out more. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |