Как преобразовать существующую сборку в сборку ms unit test? - PullRequest
27 голосов
/ 10 июня 2010

Как в Visual Studio 2010 Pro легко конвертировать классическую сборку в сборку модульного тестирования в мс?

Есть ли флаг для активации в файле .csproj?

Ответы [ 3 ]

50 голосов
/ 24 апреля 2012

Проблема в том, что тестовые проекты «помечены» в файле проекта - вы можете преобразовать библиотеку классов в тестовый проект, выполнив следующие четыре простых шага:

  1. Выгрузите файл проекта (.prj) и откройте его для обновления.
  2. добавить следующую строку в проект
    C #:

    <Project>
     <PropertyGroup>
      <AssemblyName>....</AssemblyName>
      <!-- add this line below -->
      <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     </PropertyGroup>
    </Project>
    

    VB - <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{F184B08F-C81C-45F6-A57F- 5ABD9991F28F}</ProjectTypeGuids>

  3. Перезагрузите проект обратно
  4. Запускаю (сейчас работаю) тесты

Обратите внимание, что вам необходимо вручную добавить ссылку на Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll, чтобы можно было использовать атрибуты, связанные с тестом

Обновление: в предстоящем MSTest V2 это не будет необходимо, поскольку MSTest становится пакетом NuGet, который работает так же, как NUnit / XUnit

0 голосов
/ 10 января 2019

В Visual Studio 2017 вы можете добавлять пакеты nuget MSTest.TestAdapter и MSTest.TestFramework в ваш проект C # и с этого момента использовать [TestClass] с [TestMethod] атрибутами.Они будут автоматически обнаружены и перечислены в Test Explorer.Для включения тестов добавление руководства ProjectTypeGuids не требуется.

// MyFancyClassTests.cs

namespace MyTests
{
    using Microsoft.VisualStudio.TestTools.UnitTesting;

    [TestClass]
    public class MyFancyClassTest
    {
        private readonly MyFancyClass _MyFancyClass;

        public MyFancyClassTest()
        {
            _MyFancyClass= new MyFancyClass();
        }

        [TestMethod]
        public void MyFancyClass_UninitializedName_ReturnsEmptyString()
        {
            Assert.AreEqual(string.Empty, _MyFancyClass.Name);
        }
    }
}
0 голосов
/ 10 июня 2010

Проект модульного теста - это только библиотека классов, в которой есть классы с атрибутом [TestClass], а в файле .csproj нет никаких флагов.Вы можете добавить класс в свой проект и установить атрибут [TestClass], и это будет тестовый класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...