.NET Core - biblioteka testowa
W tym rozdziale przetestujemy naszą bibliotekę StringLibrary i aby to zrobić, musimy zmienić kolejność naszych projektów, tak abyśmy mogli przestrzegać domyślnej konwencji.
Otwórzmy global.json plik.
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-preview2-003131"
}
}
U góry tego pliku zobaczysz ustawienia projektu i skonfigurujesz folder, taki jak src i test domyślnie.
Zgodnie z konwencją musimy mieć projekty w tych folderach, jest to nowa konwencja, która będzie używana jako część .NET Core.
W Eksploratorze rozwiązań widać, że zarówno projekt konsoli, jak i projekt biblioteki znajdują się w src podczas gdy projekt testowy jest w środku test teczka.
Struktura projektów w Eksploratorze rozwiązań nie reprezentuje miejsca, w którym projekty fizycznie istnieją na dysku. Otwórzmy teraz folder Rozwiązanie, a zobaczysz toStringLibrary projekt nie znajduje się w src teczka.
Widać, że oba src i test foldery są mapowane na konwencję określoną w global.jsonplik. Mamy jednak jeden projekt StringLibrary, który jest poza konwencją. Dodajmy terazStringLibrary projekt wewnątrz src teczka.
W folderze src mamy dwa projekty i musimy naprawić problem, abyśmy mogli poprawnie używać wszystkich projektów. Wróćmy do programu Visual Studio i kliknij prawym przyciskiem myszy projekt StringLibrary i wybierz opcję Usuń. Nie usunie go, ale usunie tylko projekt.
Teraz kliknij prawym przyciskiem myszy folder src i wybierz Add → Existing Project…
Przejdź do projektu StringLibrary, który znajduje się teraz w src wybierz folder StringLibrary.csproj plik i kliknij Open.
Musimy teraz usunąć odniesienie do StringLibrary z project.json plik aplikacji konsoli.
{
"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"
}
}
}
Zapisz zmiany, a następnie dodaj odniesienie do StringLibrary ponownie w projekcie konsoli.
{
"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"
}
}
}
Teraz wszystko powinno znowu działać i możesz budować StringLibrary i wtedy FirstApp(projekt konsoli) bez żadnego błędu. Przetestujmy teraz funkcjonalność StringLibrary przy użyciu xunit. Musimy dodać odwołanie do StringLibrary do naszego projektu testowego. Kliknij prawym przyciskiem myszy projekt References of StringLibraryTests i wybierz opcję Dodaj odwołanie…
Kliknij OK który doda odniesienie do StringLibrarydo naszego projektu testowego. Zastąpmy teraz następujący kod wTests.cs plik.
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());
}
}
}
Jak widać, mamy trzy metody testowe, które przetestują funkcjonalność StringLibrary. KliknijmyRun All link, a zobaczysz następujące dane wyjściowe w Eksploratorze testów.
Możesz także uruchomić testy z wiersza poleceń. Otwórzmy wiersz polecenia i wykonajmydotnet test Komenda.