Учебники

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

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

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

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

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

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

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

SRC Папка

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

StringLibrary Project

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

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

Удалить проект

Теперь щелкните правой кнопкой мыши на папке src и выберите « Добавить» → «Существующий проект».

SRC

Перейдите к проекту StringLibrary, который сейчас находится в папке src , выберите файл StringLibrary.csproj и нажмите кнопку « Открыть» .

StringLibrary.csproj

Теперь нам нужно удалить ссылку на 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 в наш тестовый проект. Щелкните правой кнопкой мыши на проекте References of StringLibraryTests и выберите Add Reference…

добавлять

Нажмите 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, и вы увидите следующий вывод в Test Explorer.

Run All Link

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