utPL / Sql测试表的内容

时间:2015-11-07 07:22:28

标签: oracle oracle11g tdd

我有一张这样的桌子:

colors
----- 
red 
green 
blue

除了为每条记录写一个utAssert.eqqueryvalue(...)之外,有没有办法对这些存在进行单元测试?

2 个答案:

答案 0 :(得分:1)

一种选择是在测试夹具中构建具有预期结果的测试表,并使用utAssert.eqTable()来验证运行测试代码的结果。 Find out more

创建堆表进行比较的需求是不幸的。它给Setup()带来了压力,需要进行事务管理。理想情况下,我们希望在集合中包含比较值,但是没有utAssert接口来比较集合和表。但你可以build your own

或者这样做:

utassert.eqquery (
  'Insert three colourns',
  'select * from YOUR_TABLE',
  'select ''red'' as colour from dual union all
   select ''green'' as colour from dual union all
   select ''blue'' as colour from dual'
);

唉,你的表格中的列数越多,就会越乏味。

答案 1 :(得分:0)

如果您需要复杂的解决方案 - 您可以将逗号分隔值数组传递给查询并检查表中是否存在所有值 如果下面的查询返回一些东西 - 这意味着测试失败

SELECT EXTRACT (VALUE (d), '//row/text()').getstringval () as test_val
  FROM (SELECT XMLTYPE (   '<rows><row>'
                        || REPLACE ('red,green,blue', ',', '</row><row>')
                        || '</row></rows>'
                       ) AS xmlval
          FROM DUAL) x,
       TABLE (XMLSEQUENCE (EXTRACT (x.xmlval, '/rows/row'))) d
except
select colors from my_table