2010-03-23 58 views
0

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

回答

0

对于XML文件中支持NDbUnit的所有测试数据,您的PK值都是GUID类型,请注意,所需的全部数据类型都是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长格式8chars,4chars- 4chars-4chars-12chars。如果你正在像这样手工制作你的测试数据,那么没有任何东西可以保持所有角色不变。这种方法消除了为测试数据生成“实际GUID”的需要,并允许您通过简单的GUID重复表示来轻松地引用这些GUID,如上面的示例所示。

请注意,在这种情况下,您正在为您输入到测试数据中的GUID的“唯一性”承担100%的责任,因此此测试数据只能安全地与其他GUID-基于数据行。这个(通常)不应该是任何问题,因为NDbUnit的整个要点是单独加载和管理这样的数据。

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

希望这会有所帮助。

+0

这就是我所做的“对于这样的测试数据,以便您可以正确引用FK中的其他PK(例如),我总是建议在测试数据中使用”确定性人为创建的GUID“。满足要求时,该值是一个GUID,并在制作测试数据时更容易与他们合作。“ – jess 2010-05-20 07:35:24

+0

但是,用手写这些GUID还是让我很痛苦 – jess 2010-05-20 07:35:44