我有一张这样的桌子:
colors
-----
red
green
blue
除了为每条记录写一个utAssert.eqqueryvalue(...)之外,有没有办法对这些存在进行单元测试?
答案 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