.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 команда.