我正在使用NDBUbit从XML文件加载数据。现在,我手动为xml文件中的每条记录(所有表的主键都是唯一标识符)提供GUID。但是,我想知道是否有更好的方法吗?
答案 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的唯一合理方式。
希望这有帮助。