Модульное тестирование базы данных VS 2010 с пользовательским тестовым условием

После прочтения следующей статьи Создание условий тестирования для конструктора модульных тестов базы данных на MSDN я решил попробовать создать собственное тестовое условие для моих модульных тестов базы данных

  • Я выполнил требования либо Ultimate, либо Premium в качестве среды.
  • Создал новый проект библиотеки классов и сослался на Microsoft.Data.Schema.UnitTesting и Microsoft.Data.Schema, а также на Microsoft.Data.Schema.Sql
  • Я создал класс, наследуемый от TestCondition, и назвал его ExpectedSqlException следующим образом:

РЕДАКТИРОВАТЬ:

     [DisplayName("Some test condition")] 
     [DatabaseSchemaProviderCompatibility(null)] 
     public class SomeTestCondition : TestCondition
     {
         public override void Assert(System.Data.Common.DbConnection validationConnection, Microsoft.Data.Schema.UnitTesting.ExecutionResult[] results)
         {
         ...
         }
    } 
  • Следуя инструкциям, я создал файл extensions.xml, который затем помещается в %ProgramFiles%\Microsoft Visual Studio 10.0\VSTSDB\Extensions и выглядит так (тип ключ/значение - это общедоступная информация моей сборки, у вас она должна отличаться)

    <?xml version="1.0" encoding="utf-8"?>    
    <extensions assembly="" version="1" xmlns="urn:Microsoft.Data.Schema.Extensions" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:Microsoft.Data.Schema.Extensions Microsoft.Data.Schema.Extensions.xsd">    
        <extension type="SomeTestCondition.SomeTestCondition" assembly="SomeTestCondition, Version=1.0.0.0, Culture=neutral, PublicKeyToken=01a289ad96d7a8a8" enabled="true" />    
    </extensions>
    
  • И зарегистрировал сборку в GAC после подписания сборки

Итак, теперь с моим новым TestCondition я должен иметь возможность использовать его в дизайнере модульного тестирования базы данных, чтобы определить ожидания, НО, УВЫ, ЭТО НЕ РАБОТАЕТ :(

Может кто-то помочь мне с этим? что мне не хватает?


person almog.ori    schedule 04.02.2011    source источник


Ответы (1)


Я вижу одну вещь, которую я сделал по-другому, когда делал это, что не ясно указано в том, как связать, на которую вы ссылаетесь.

Он говорит о том, чтобы помещать вещи в «Program Files», но, возможно, это работает только для 32-битных машин. Visual Studio — это 32-битное приложение, и на 64-битной машине (которую я использовал) я проигнорировал инструкции и скопировал сборку и XML-файл в %ProgramFiles(x86)% НЕ %ProgramFiles%, что, похоже, сработало для меня. Я вообще никогда не пробовал %ProgramFiles%, поэтому я не могу убедиться, что это проблема.

Это оно?

Приложение:

При дальнейшем рассмотрении вашего кода вам придется добавить атрибут [DatabaseSchemaProviderCompatibility(null)] в ваше TestCondition. Это загрузит расширение, если у вас нет поставщика схемы базы данных, загруженного в текущий проект, как в случае с тестовыми проектами. Этот атрибут, на мой взгляд, не очень интуитивен.

Джеймс.

person James World    schedule 09.02.2011
comment
привет, джеймс, интересная теория, я работаю на 32-битной машине и пробовал как в каталоге программных файлов, так и, наконец, в GAC, и все равно не повезло, хотел узнать, не могли бы вы расширить свой ответ своим практическим руководством ?? - person almog.ori; 10.02.2011
comment
Отредактировано... попробуйте добавить атрибут, как описано выше. - person James World; 11.02.2011
comment
хорошо замечено, попытался изменить тип на null в параметре атрибута, не уверен на 100%, что это было так, но это сработало, спасибо - person almog.ori; 11.02.2011