Запуск MSTest с тестами на разных базах данных - PullRequest
0 голосов
/ 18 мая 2009

Я хотел бы спросить, каков наилучший способ выполнить настройку, подобную следующей: У нас есть набор тестов, который скомпилирован, и в файле app.config у меня есть 6-7 различных строк подключения к различным базам данных. Я хотел бы запустить набор тестов для каждого соединения, и я надеялся каким-то образом параметризировать этот процесс - что-то вроде задания имени соединения и передачи его в testrun в качестве параметра. До сих пор я выяснил, что я могу использовать разные файлы localconfigrun и с помощью элементов развертывания я могу кормить файл xml / txt требуемым значением, но есть ли более приятное и легкое решение? Мне нужно просто отправить пару ключ / значение или простую строку для настройки моего базового класса внутри набора тестов.

Я использую tfsbuild, но могу использовать mstest и в других средах (чистый msbuild и т. Д.)

Заранее спасибо.

1 Ответ

1 голос
/ 28 мая 2009

У меня была похожая проблема. Вот что я сделал:

Мой app.config выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="ConenctToInputDB" value="InputDev" />
    <add key="ConnectToOutputDB" value ="OutputDev"/>
    <add key="ClientSettingsProvider.ServiceUri" value="" />
  </appSettings>
  <connectionStrings>
    <add name="LocalConnection" connectionString="YOUR CONNECTION STRING HERE" />
    <add name="InputDev" connectionString="YOUR CONNECTION STRING HERE" />
    <add name="InputCert" connectionString="YOUR CONNECTION STRING HERE"/>
    <add name="OutputDev" connectionString="YOUR CONNECTION STRING HERE/>
    <add name="OutputCert" connectionString="YOUR CONNECTION STRING HERE" />
    <add name="InputProd" connectionString="YOUR CONNECTION STRING HERE/>
    <add name="OutputProd" connectionString="YOUR CONNECTION STRING HERE" />
  </connectionStrings>

В этом сценарии у меня есть 2 дБ, к которым я подключаюсь, и у меня есть 3 разных строки подключения для каждой (Разработка, Сертификация и Производство)

Добавьте это в конец файла вашего проекта (щелкните проект правой кнопкой мыши и выгрузите его). Обязательно добавьте его перед тегом </project>. (Для этого вам нужно будет установить Задачи Сообщества MSBuild. Их можно бесплатно загрузить по адресу: http://msbuildtasks.tigris.org/ (Убедитесь, что вы получаете ночные сборки))

  <PropertyGroup>
    <!--Import the MSBuild community tasks so we can update xml-->
    <MSBuildCommunityTasksPath>C:\PathToMSBuildCommunityTasks\MSBuildTasks</MSBuildCommunityTasksPath>
    <SubstitutionsFile Condition="'$(Configuration)' == 'Debug'">DevAppSettings.xml</SubstitutionsFile>
    <SubstitutionsFile Condition="'$(Configuration)' == 'Cert'">CertAppSettings.xml</SubstitutionsFile>
    <SubstitutionsFile Condition="'$(Configuration)' == 'Prod'">ProdAppSettings.xml</SubstitutionsFile>
  </PropertyGroup>
  <Import Project="C:\PathToMSBuildCommunityTasks\lib\MSBuildTasks\MSBuild.Community.Tasks.Targets" />
  <Target Name="AfterBuild">
    <!--Update the app config to have the correct environment paths-->
    <Message Text="Updating $(MSBuildProjectName) config to $(Configuration)" Importance="high"></Message>
    <XmlMassUpdate ContentFile="$(OutDir)\$(MSBuildProjectName).dll.config" SubstitutionsFile="..\..\$(SubstitutionsFile)" />
  </Target>

Это заменит раздел <appSettings> файла app.config в зависимости от текущей конфигурации. Вам нужно будет сделать новые новые конфигурации (я назвал их Cert и Prod).

Последний шаг - создать файл для каждой конфигурации (я назвал их DevAppConfig.xml, CertAppConfig.xml, ProdAppConfig.xml)

В каждом файле должен выглядеть так (это для конфигурации сертификации):

<?xml version="1.0" encoding="utf-8"?>
<!--This file is used by the build files to merge in solution wide app settings
Some projects contain files that have an AppSetting section (usually in App.config).  Those projects have
and AfterBuild event in the project file that substitues this xml tree over the the normal xml tree.-->
<configuration xmlns:xmu="urn:msbuildcommunitytasks-xmlmassupdate">
  <appSettings>
    <add xmu:key="key" key="ConenctToInputDB" value="Cert"/>
    <add xmu:key="key" key="ConnectToOutputDB" value="ESPCert"/>
  </appSettings>
</configuration>

все это после установки приведет к автоматическому изменению файла, выводимого app.config, в зависимости от компилируемой вами конфигурации. Этот код работает как для компиляции в IDE, так и в Team Build.

...