0

sql表的NAME字段是其他字段的组合:

1_2_UserId_CreationDatetime 例如 1_2_domain\Elisa_15-07-2012 08:30:57

我的 NAME 字段有一个唯一约束来表示不允许使用相同的名称。主键是一个 auto inc id。

现在在插入新数据行时捕获 UniqueConstraintException 是否有意义,但实际上不可能两次具有相同的名称,因为用户必须登录到 Web 应用程序两次并在同一秒内按下按钮等等。 .

我真的应该测试这样的场景吗?

更新

这就是工作流程:

用户通过从模板列表中选择并发布来创建新的测试计划。

然后使用 releaseName_templateName_UserId_CreationDate 保存测试计划

但是在 4 个字段中保存了 releaseId、templateId、UserId 和 CreatedDate。

要将用户显示为 NAME,releaseId 和 templateId(都是 int`s)没有意义。

因此,我将 NAME 与所有 4 个 part_names 一起保存。

在此处输入图像描述

此复合 NAME 字段的另一种设计替代方案是从 Testplan 表中删除 NAME 字段,当我加载所有测试计划时,我尝试获取每个 releaseId 和 templateId 的 releaseName 和 templateName。

你怎么看?好吧,还请记住我关于边缘案例的原始问题......

4

2 回答 2

1

我会测试它。异常如何发生在某种程度上无关紧要。您的系统的使用模式可能会随着时间而改变。

作为记录,您可能违反了第一范式,如果是,我建议您放弃这种方法,除非您对其进行大量思考和分析。我必须看到完整的桌子。如果那些其他列在同一个表中,那么你肯定是。您可以在这些多列中添加唯一约束,或者可能将这些列用作复合主键(如果这确实是您的意图)。您可能还需要将其中一些字段移到其他表中。我真的必须看到你的设计才能确定。

于 2012-07-20T19:19:38.733 回答
0

您描述测试的方式听起来像是测试只是测试 RDBMS 是否正常运行——而不是您真正应该关心的事情(如果 RDBMS 不工作,您使用另一个)。要么,要么你正在测试你的架构。我不确定这有多大价值。如果单元测试失败,你期望做什么?您会验证架构是否正确,如果正确,那又如何?如果您正在执行许多其他测试来验证架构没有更改为预期值,那么这样的测试可能是有意义的。如果不是,那对我来说没有多大意义。

现在,如果您的应用程序处理了这个 UniqueContraintException 并做了一些特定的事情,那么验证应用程序执行的测试是有意义的。

于 2012-07-20T20:23:40.340 回答