我现在正在使用NDBUbit从XML file.Right中加载数据,我手动为xml file.But中的每个记录提供GUID (我们所有表的主键都是唯一标识符),我想知道是否有更好的方法来做到这一点?
发布于 2010-05-17 19:11:43
对于支持NDbUnit的XML文件中的所有测试数据,其中的pk值都是GUID类型,请注意,所有需要的数据类型都是GUID --它实际上不一定是“随机”GUID。
对于这样的测试数据,以便您可以在FKs中正确引用其他PKs (例如),我始终建议在您的测试数据中使用“确定性的人工创建的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,如上面的示例所示。
请注意,在这种情况下,您将对输入到测试数据中的GUID的“唯一性”承担100%的责任,因此此测试数据只能安全地与其他基于GUID的数据行隔离使用。这(通常)不应该是任何问题,因为NDbUnit的全部要点是独立地加载和管理这样的数据。
如果您不想在这样的XML文件中手动编辑测试数据,我们即将发布名为“NDbUnit DataSet编辑器”的工具的alpha版本,该工具提供了一个用于编辑测试数据的图形用户界面,还包含一个用于此类情况的“生成和插入GUID”工具栏按钮。但是,请注意,在这种情况下生成的GUID将是“真实的”GUID,这意味着复制和粘贴是将一个GUID作为DataSet中其他地方的另一条记录的FK引用的唯一合理方法。
希望这能有所帮助。
https://stackoverflow.com/questions/2498851
复制相似问题