NDBUbit を使用して XML ファイルからデータをロードしています。現在、xml ファイルの各レコード (すべてのテーブルの主キーは一意の識別子) の GUID を手動で指定しています。これを行う?
1 に答える
PK 値が GUID 型である NDbUnit をサポートするための XML ファイル内のすべてのテスト データについて、必要なのはデータ型が 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 について「知っている」必要があるのは、GUID が 8chars-4chars-4chars-4chars-12chars の形式で 32 文字の長さであることだけです。このように「手作業で」テストデータを作成している場合、すべての文字が同じになることを妨げるものは何もありません。このアプローチにより、テスト データの「実際の GUID」を生成する必要がなくなり、上記のサンプルに示すように、GUID の単純な繰り返し表現によってこれらを簡単に参照できるようになります。
この種のシナリオでは、テスト データに入力する GUID の「一意性」について 100% の責任を負うことに注意してください。そのため、このテスト データは、他の GUID ベースのデータ行から分離して安全に使用できます。NDbUnit の全体的なポイントは、このようなデータを分離してロードおよび管理することであるため、これは (通常) 問題にはなりません。
このような XML ファイルで手動でテスト データを編集したくない場合は、テスト データを編集するための GUI を提供し、'そのような状況では、GUID のツールバー ボタンを生成して挿入します。ただし、このような場合に生成される GUID は「実際の」GUID になることに注意してください。つまり、DataSet 内の他の場所にある別のレコードの FK として参照するには、コピー アンド ペーストが唯一の合理的な方法です。
お役に立てれば。