用于自动生成id的Dbunit xmlfile fubctions

时间:2016-03-21 14:33:18

标签: java spring dbunit

我的testc案例中有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")等函数会有很大帮助。在数据库单元中是否有这样的东西,或者我自己可以创建这样的函数吗?

如果有其他建议可以避免这个问题,我也很高兴在这里。

1 个答案:

答案 0 :(得分:1)

听起来您正在为所有测试使用相同的测试数据文件。更好的做法是拥有多个测试文件 - 每个测试一个测试特定数据和用于“主列表”数据的公共文件。 “主列表”数据在每次测试时都不会更改,因此在合并测试数据文件时不会遇到上述问题。