Предоставление GUID для данных с использованием NDBUnit - PullRequest
0 голосов
/ 23 марта 2010

Я использую NDBUbit для загрузки данных из файла XML. Прямо сейчас я вручную даю GUID для каждой записи (наш первичный ключ для всех таблиц - уникальный идентификатор) в файле XML. Но мне интересно, есть лилучший способ сделать это?

1 Ответ

0 голосов
/ 17 мая 2010

Для всех тестовых данных в файлах XML для поддержки NDbUnit, где ваши значения PK имеют тип GUID, обратите внимание, что все, что требуется, это чтобы тип данных был GUID - на самом деле он не должен быть ' случайный 'GUID.

Для таких тестовых данных, чтобы вы могли правильно ссылаться на другие PK в FK (например), я всегда рекомендую использовать «детерминированные созданные человеком 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, как показано в примере выше.

Обратите внимание, что в этом сценарии ВЫ берете на себя 100% ответственности за «уникальность» GUID, которые вы вводите в свои тестовые данные, поэтому эти тестовые данные можно безопасно использовать только в изоляции от других основанных на GUID строки данных. Это (как правило) не должно быть проблемой, поскольку весь смысл NDbUnit состоит в том, чтобы загружать и управлять такими данными, как это изолированно.

Если вы не хотите редактировать свои тестовые данные вручную в XML-файле, подобном этому, мы близки к альфа-версии инструмента под названием «NDbUnit DataSet Editor», который предоставляет графический интерфейс для редактирования тестовых данных, а также содержит кнопку панели инструментов «Генерировать и вставить GUID» для таких ситуаций. Тем не менее, обратите внимание, что GUID, сгенерированные в таком случае, будут «настоящими» GUID, что означает, что копирование и вставка будет единственным разумным способом ссылаться на один как FK другой записи в другом месте в DataSet.

Надеюсь, это поможет.

...