Вы действительно можете запускать тесты в VS без файлов .vsmdi и .testsettings (фактически, вы можете просто удалить их после добавления тестового проекта)
Так почему же он не работает с обычной библиотекой классов? awnser находится внутри файла .csproj.
Это обычная библиотека классов:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{F191EC72-AFDF-49CE-A918-01905E7C32EF}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>test</RootNamespace>
<AssemblyName>test</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
А это тестовый проект:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{F191EC72-AFDF-49CE-A918-01905E7C32EF}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>test</RootNamespace>
<AssemblyName>test</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup>
Этот последний элемент, ProjectTypeGuids
, говорит VS, что это проект, на котором вы можете запускать тесты MSTest. насколько мне известно, эти руководства всегда одинаковы, [по крайней мере, с учетом той же версии VS], поэтому вы должны иметь возможность вставить эту строку в любой файл .csproj и заставить VS распознавать тесты внутри.
Файл настроек теста может быть полезен для указания параметров развертывания (и многих других), но большинство параметров также можно указать в командной строке для mstest.exe
.vsmdi также можно заменить добавлением атрибутов в ваши методы тестирования. большинство, если не все параметры, доступные в Properties
для теста, могут быть заданы как атрибуты, так и в файле vsmdi. я обычно предпочитаю атрибуты, так как они «ближе» к коду.