使用NDBUnit为数据提供GUID

时间:2010-03-23 09:50:31

标签: ndbunit

我正在使用NDBUbit从XML文件加载数据。现在,我手动为xml文件中的每条记录(所有表的主键都是唯一标识符)提供GUID。但是,我想知道是否有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

对于支持NDbUnit的XML文件中的所有测试数据,其中PK值为GUID类型,请注意所需的只是数据类型为GUID - 实际上不必是'随机'GUID。

对于这样的测试数据,以便您可以正确引用FK中的其他PK(例如),我总是建议在测试数据中使用'确定性的人工创建的GUID'。它们都满足了值为GUID 的要求,使您在制作测试数据时更容易使用它们。

例如,请参阅以下内容:

<?xml version="1.0" encoding="utf-8" ?> 
<UserDS xmlns="http://tempuri.org/UserDS.xsd">
    <Role>
        <ID>11111111-1111-1111-1111-111111111111</ID>
        <Name>Admin</Name>
        <Description>Serves as an administrator</Description>
    </Role>
    <Role>
        <ID>22222222-2222-2222-2222-222222222222</ID>
        <Name>User</Name>
        <Description>User with limited security</Description>
    </Role>
  <dbo.User>
    <ID>22222222-2222-2222-2222-222222222222</ID>
    <FirstName>John</FirstName>
    <LastName>Williams</LastName>
    <Age>30</Age>
    <SupervisorID>11111111-1111-1111-1111-111111111111</SupervisorID>
  </dbo.User>
  <dbo.User>
    <ID>11111111-1111-1111-1111-111111111111</ID>
    <FirstName>Hammad</FirstName>
        <LastName>Awan</LastName>
        <Age>29</Age>
    </dbo.User>
    <UserRole>
        <UserID>11111111-1111-1111-1111-111111111111</UserID>
        <RoleID>11111111-1111-1111-1111-111111111111</RoleID>
    </UserRole>
    <UserRole>
        <UserID>22222222-2222-2222-2222-222222222222</UserID>
        <RoleID>11111111-1111-1111-1111-111111111111</RoleID>
    </UserRole>
    <UserRole>
        <UserID>11111111-1111-1111-1111-111111111111</UserID>
        <RoleID>22222222-2222-2222-2222-222222222222</RoleID>
    </UserRole>
</UserDS>

在这种情况下,要管理这些测试数据,您需要“了解”所有关于GUID的信息是它们是32chars long,格式为8chars-4chars-4chars-4chars-12chars。如果您像这样手工制作测试数据,那么就没有任何东西可以保持所有角色不同。这种方法消除了为测试数据生成“实际GUID”的任何需要,并允许您通过GUID的简单重复表示轻松引用这些,如上面的示例所示。

请注意,在这种情况下,您将对您输入测试数据的GUID的'uniqeness'负全部责任,因此此测试数据只能安全地与其他基于GUID的隔离使用数据行。这(通常)不应该是任何问题,因为NDbUnit的重点是单独加载和管理这样的数据。

如果您不想在这样的XML文件中手动编辑测试数据,我们接近一个名为“NDbUnit DataSet Editor”的工具的alpha版本,它提供了一个用于编辑测试数据的GUI。包含一个'生成并插入GUID'工具栏按钮,仅适用于此类情况。但是,请注意在这种情况下生成的GUID将是“真正的”GUID,这意味着复制和粘贴将是将其引用为DataSet中其他记录的FK的唯一合理方式。

希望这有帮助。