我正在使用 NDBUbit 从 XML 文件加载数据。现在,我手动为 xml 文件中的每条记录(我们所有表的主键是唯一标识符)提供 GUID。但是,我想知道是否有更好的方法做这个?
1 回答
对于支持 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 的所有内容是它们的长度为 32 个字符,格式为 8chars-4chars-4chars-4chars-12chars。如果您像这样“手工”制作测试数据,没有什么可以阻止所有角色相同。这种方法消除了为您的测试数据生成“实际 GUID”的任何需要,并允许您通过简单的 GUID 重复表示轻松地引用这些,如上面的示例所示。
请注意,在这种情况下,您对输入到测试数据中的 GUID 的“唯一性”承担 100% 的责任,因此该测试数据只能安全地与其他基于 GUID 的数据行隔离使用。这(通常)不应该成为任何问题,因为 NDbUnit 的重点是单独加载和管理诸如此类的数据。
如果您不想在这样的 XML 文件中手动编辑测试数据,我们即将推出一个名为“NDbUnit DataSet Editor”的工具的 alpha 版本,该工具提供用于编辑测试数据的 GUI,还包含一个“为这种情况生成并插入 GUID 工具栏按钮。但是,请注意在这种情况下生成的 GUID 将是“真实的”GUID,这意味着复制和粘贴将是唯一合理的方式来引用一个作为数据集中其他地方的另一个记录的 FK。
希望这可以帮助。