如果结果更加结构化,而不是在屏幕上显示一行文本,则必将能够更加容易地验证 Codecheck 正确性。让我们重新查看 allargs_test.noparms2 的结果:
allargs_test.noparms2;allargs_test.noparms2 ('abc');allargs_test.noparms2 ('abc', 'def');
这里实际显示的是以上任一调用中的内容,PL/SQL 不能识别我想要运行哪两个 noparms2 过程。我明白自己正在对比哪一对超载,并知道在每个超载中哪个序列的参数有歧义。我可以在数据库表或集合中保存这些信息(既有我所期望的控制数据,也有来自运行 Codecheck 的测试数据)。然后,我就可以使用 utAssert.eqTable,检查 Codecheck 对于控制表所分析的结果,该控制表由我建立并填入了我预期的结果。我已发现,通常填充和使用关系表要比集合容易得多,因此在回顾迄今为止的思路后,让我们继续采用这一思路:
我并不准备依靠 DBMS_OUTPUT 来验证其正确性,但我确实希望将结果显示到屏幕上,以便 Codecheck 的用户可以方便地看到这些结果。毕竟这就是该实用工具的全部要点。
我希望 Codecheck 利用那些相同的结果来填充数据库表,这样我就可以全面而精确地测试该实用工具了。
现在应该设计一个数据库表(或者两或三个),将可持续性数据结构的需求(和期望列表)考虑在内:
存储控制和测试数据。不必将这些数据放在同一个表中,实际上我倾向于将其分开。这样管理数据和执行测试将更加容易。
跟踪 utPLSQL 需要的所有信息,运行其测试并报告结果。
尽量减少在测试程序包中需要编写的与 utPLSQL 集成的代码数量。
我首先从最后一点开始讲起。我在先前曾提及,测试代码数量多于应用程序的情况并不少见。这很好,但我绝对不会介意获得全面测试的同时不必编写、生成或设计数千行代码。有这种可能吗?
实际上,这是我所希望的用于 Codecheck 的测试程序包的样子(伪代码形式):
BEGIN FOR every testcase LOOP Run Codecheck for the testcase scenario Compare test results to control table END LOOP;END;
|
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容 本站提醒:不要进行人身攻击。谢谢配合。 |