sql表的NAME字段是其他字段的组合:
1_2_UserId_CreationDatetime例如1_2_domain \ Elisa_15-07-2012 08:30:57
我的NAME字段具有唯一约束,表示不允许使用相同的名称。主键是自动装置。
在插入新的数据行时捕获UniqueConstraintException现在是否有意义,但实际上它不可能两次具有相同的名称,因为用户必须登录Web应用程序2次并在同一秒内按下按钮等...
我真的应该测试这种情况吗?
更新
这就是工作流程:
用户通过从模板列表中选择并发布来创建新的测试计划。
然后使用releaseName_templateName_UserId_CreationDate
保存测试计划但是在4个字段中保存了releaseId,templateId,UserId和CreatedDate。
要将用户显示为NAME,releaseId和templateId(都是int`s)没有意义。
因此,我使用所有4个part_names保存NAME。
此复合NAME字段的另一种设计替代方法可能是从Testplan表中删除NAME字段,当我加载所有测试计划时,我尝试为每个releaseId和templateId获取releaseName和templateName。
你怎么看?那么请还记得我关于边缘案例的原始问题......答案 0 :(得分:1)
我会测试它。异常如何发生在某种程度上无关紧要。系统的使用模式可能会随时间而变化。
记录中,您可能违反了first normal form,如果您是,我建议您放弃这种方法,除非您对其进行了大量的思考和分析。我必须看到全桌。如果那些其他列在同一个表中,那么你肯定是。您可以在这些多列中添加唯一约束,也可以将这些列用作复合主键(如果这确实是您的意图)。您可能还需要将其中一些字段移到其他表中。我真的要看看你的设计是否确定。
答案 1 :(得分:0)
你描述测试的方式听起来像测试只会测试RDBMS是否正常运行 - 不是你应该关注的事情(如果RDBMS不起作用,你用另一个)。或者,或者您正在测试您的架构。我不确定这有多大价值。如果单元测试失败,您期望做什么?你会验证架构是否正确,如果是,那么什么?如果您正在执行许多其他测试以验证架构尚未更改为预期值,则此类测试可能有意义。如果不是,那对我来说没有多大意义。
现在,如果您的应用程序处理了此UniqueContraintException并执行了某些特定操作,那么用于验证应用程序执行情况的测试是否合理。