.NET Core - Библиотека тестирования

В этой главе мы протестируем нашу StringLibrary, и для этого нам необходимо изменить порядок наших проектов, чтобы мы могли следовать соглашению по умолчанию.

Давайте откроем global.json файл.

{ 
   "projects": [ "src", "test" ], 
   "sdk": { 
      "version": "1.0.0-preview2-003131" 
   } 
}

Вверху этого файла вы увидите настройки проекта, и он устанавливает какую-то папку, например src и test по умолчанию.

Поскольку по соглашению у нас должны быть проекты в этих папках, это новое соглашение, которое будет использоваться как часть .NET Core.

В обозревателе решений вы можете увидеть, что проект консоли и проект библиотеки находятся внутри src папка, пока проект тестирования находится внутри test папка.

И структура проектов в обозревателе решений не отражает их физическое расположение на диске. Давайте теперь откроем папку Solution, и вы увидите, чтоStringLibrary проект не внутри src папка.

Вы можете видеть, что оба src и test папки соответствуют соглашению, указанному в global.jsonфайл. Однако у нас есть один проект StringLibrary, который не соответствует правилам. Давайте теперь добавимStringLibrary проект внутри src папка.

В папке src у нас есть два проекта, и нам нужно исправить проблему, чтобы мы могли правильно использовать все проекты. Вернемся в Visual Studio, щелкните правой кнопкой мыши проект StringLibrary и выберите параметр «Удалить». Он не удалит его, а только удалит проект.

Теперь щелкните правой кнопкой мыши папку src и выберите Add → Existing Project…

Перейдите к проекту StringLibrary, который теперь находится внутри src папку, выберите StringLibrary.csproj файл и щелкните Open.

Теперь нам нужно удалить ссылку на StringLibrary из project.json файл консольного приложения.

{ 
   "version": "1.0.0-*", 
   "buildOptions": { 
      "emitEntryPoint": true 
   }, 
   "dependencies": { 
      "Microsoft.NETCore.App": { 
         "type": "platform", 
         "version": "1.0.1" 
      }, 
      "NuGet.CommandLine": "3.5.0", 
      "System.Runtime.Serialization.Json": "4.0.3" 
   }, 
   "frameworks": { 
      "netcoreapp1.0": { 
         "dependencies": { }, 
         "imports": "dnxcore50" 
      } 
   } 
}

Сохраните изменения, а затем добавьте ссылку на StringLibrary снова в вашем консольном проекте.

{ 
   "version": "1.0.0-*", 
   "buildOptions": { 
      "emitEntryPoint": true 
   }, 
   "dependencies": { 
      "Microsoft.NETCore.App": { 
         "type": "platform", 
         "version": "1.0.1" 
      }, 
   "NuGet.CommandLine": "3.5.0", 
      "System.Runtime.Serialization.Json": "4.0.3" 
   }, 
   "frameworks": { 
      "netcoreapp1.0": { 
         "dependencies": { 
            "StringLibrary": { 
               "target": "project" 
            } 
         }, 
         "imports": "dnxcore50" 
      } 
   } 
}

Теперь все должно снова работать, и вы можете строить StringLibrary а потом FirstApp(консольный проект) без ошибок. Давайте теперь протестируем функциональность StringLibrary с помощью xunit. Нам нужно добавить ссылку на StringLibrary в наш тестовый проект. Щелкните правой кнопкой мыши проект "Ссылки проекта StringLibraryTests" и выберите "Добавить ссылку…"

Нажмите OK который добавит ссылку на StringLibraryв наш тестовый проект. Давайте теперь заменим следующий код вTests.cs файл.

using System; 
using Xunit; 
using StringLibrary; 
  
namespace Tests { 
   public class Tests { 
      [Fact] 
      public void StartsWithUpperCaseTest() { 
         string input = "Mark"; 
         Assert.True(input.StartsWithUpper()); 
      } 
      [Fact] 
      public void StartsWithLowerCaseTest() { 
         string input = "mark"; 
         Assert.True(input.StartsWithLower()); 
      } 
      [Fact] 
      public void StartsWithNumberCaseTest() { 
         string input = "123"; 
         Assert.True(input.StartsWithNumber()); 
      } 
   } 
}

Вы можете видеть, что у нас есть три тестовых метода, которые проверяют функциональность StringLibrary. Щелкнем поRun All ссылку, и вы увидите следующий результат в обозревателе тестов.

Вы также можете запустить тесты из командной строки. Давайте откроем командную строку и выполнимdotnet test команда.