【发布时间】:2016-03-21 14:33:18
【问题描述】:
我在我的测试用例中遇到了 DBUnit 问题。当我在 db 单元中创建数据时,我目前明确指定了 Id。它看起来像这样。
<users user_id="35" corpid="CORP\35" last_login="2014-10-27 00:00:00.0" login_count="1" is_manager="false"/>
<plans plan_id="18332" state="1" owned_by_user="35" revision="4"/>
<plan_history plan_history_id="12307" date_created="2014-08-29 14:40:08.356" state="0" plan_id="18332"/>
<plan_history plan_history_id="12308" date_created="2014-08-29 16:40:08.356" state="1" plan_id="18332"/>
<goals goal_id="12331" goal_name="Dansa" description="Dans"/>
<personal_goals plan_id="18332" personal_goal_id="18338" date_finished="2014-10-28 00:00:00.192" goal_id="12331" state="0"/>
<personal_goal_history personal_goal_id="18338" personal_goal_history_id="18005" date_created="2014-08-29 14:40:08.356" state="1" />
<activities activity_id="13001"/>
<custom_activities activity_name="customActivity" description="Replace" activity_id="13001"/>
<personal_activities personal_activity_id="17338" personal_goal_id="18338" date_finished="2014-10-28 00:00:00.192" state="0" activity_id="13000"/>
<personal_activity_history personal_activity_id="17338" personal_activity_history_id="18338" date_created="2014-08-29 14:40:29.073" state="1" />
由于用户的 id 是按字面意思指定的,我们经常会遇到测试之间的合并问题,而且解决起来真的很麻烦。这是因为我们可能在不同的分支上工作,并且可能有几个人分配了相同的 id。然后解决方案变为更新种子数据中的所有 id 和所有关系 id 以及更新测试文件。这项工作真的很麻烦。
我在那里寻找一些自动生成 ID 的方法。例如getNextId("User") 和getLatestId("User") 之类的函数会很有帮助。 DB单元中是否有类似的东西,或者我自己可以创建这样的功能吗?
如果对如何避免此问题有其他建议,我也很乐意在这里提供。
【问题讨论】:
-
“合并测试之间的问题”是什么意思?
-
这意味着当我们在我们的 vsc 系统 (git) 的不同分支中添加测试时,我们在尝试合并我们的种子数据文件时会遇到问题。这是因为当我们必须为特定测试提供特定用户的 id 时,我们必须确保没有其他人在他们的分支测试中使用该 id。由于这对于大型团队来说确实很难做到,所以我们现在有时必须重新编号测试中的 id:s 和种子数据中的那些,如果发生这种情况。