2012-03-22 40 views
2

SQL Developer支持DML的单元测试,但是我还没有找到为DDL创建单元测试的方法。什么是解决这个问题的好方法?我从头开始的模式很少,只有不到十几张桌子上有更大的项目。谷歌没有多少回应单元测试应用于DDL。任何关于测试DDL或其他单元测试DDL工具的方法的想法?使用SQL Developer 3.1进行单元测试DDL

回答

0

你想测试DDL的什么?表格是按照定义创建的,或者不是。

你可以做的是编写一系列测试,查询数据字典以确保表存在,具有所需大小和数据类型的列等。这将是比单元测试更多的模式验证脚本不过,我不确定它会有多宝贵。

如果你保持一个架构构建脚本(或一系列迁移到新对象添加到对象添加到您的架构),那么它是否适用不知道,因为它定义的架构已产生的误差。

然后,如果你有存储过程,他们中的一些将无法编译,如果模式是不是100%正确。清楚地获得程序将是架构的另一个验证步骤。

最后,你写单元测试来测试DML和存储过程将验证正确的数据进入正确的表格。

您可能需要一些测试,以确保一个表只能接受特定的值或列可以是唯一的等(即测试限制是正确的),但将下降到标准单元测试过。

我在写单元测试DB代码非常相信,但我不喜欢做它的SQL开发GUI方法。现在我正在为应用程序编写测试,但是我正在使用Ruby编写测试代码,并且它似乎运行良好。它也将被轻松构建到我们的构建和自动化测试过程中。

另一种选择是我以前使用过的UT_PLSQL,但是由于PLSQL的本质使得测试非常冗长,这就是为什么我决定使用Ruby来处理当前项目的原因。

+0

外键和约束例如可能涉及大量的逻辑,应该可能得到单元测试,不是吗? – 2016-04-19 20:14:16

0

我知道这是一个老问题,但我最近一直在努力解决同样的问题。我认为在创建对象之前为DDL定义测试,然后创建那些通过这些测试的对象是很有用的。

我用assert“模式” - 即tdd.ddlunit.assert_tableexists(p_schema_name,p_table_name)完成了一些操作,如果表不存在,就会以静默方式运行。

我创建

其他断言是对于像确保所有VARCHAR2列使用字符语义,而不是字节长度语义,并确保所有的表和列注释。

这些被签入代码存储库,可以通过持续集成框架运行,以确保我们拥有一个有效的数据库,符合我们的预期。