.NET Core: libreria di test
In questo capitolo, testeremo la nostra StringLibrary e per farlo, dobbiamo riorganizzare i nostri progetti in modo da poter seguire la convenzione predefinita.
Apriamo il file global.json file.
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-preview2-003131"
}
}
Nella parte superiore di questo file vedrai le impostazioni del progetto e configura alcune cartelle come src e test per impostazione predefinita.
Poiché per convenzione dobbiamo avere progetti in queste cartelle, questa è la nuova convenzione e verrà utilizzata come parte di .NET Core.
In Esplora soluzioni, puoi vedere che sia il progetto della console che il progetto della libreria si trovano all'interno del file src cartella mentre il progetto Testing è all'interno test cartella.
E la struttura dei progetti in Esplora soluzioni non rappresenta dove esistono fisicamente i progetti sul disco. Apriamo ora la cartella Soluzione e lo vedraiStringLibrary il progetto non è all'interno di src cartella.
Puoi vederlo entrambi src e test cartelle mappate alla convenzione specificata in global.jsonfile. Tuttavia, abbiamo un progetto StringLibrary che è fuori convenzione. Aggiungiamo ora il fileStringLibrary progetto all'interno del src cartella.
Nella cartella src, abbiamo due progetti e dobbiamo risolvere il problema in modo da poter utilizzare correttamente tutti i progetti. Torniamo a Visual Studio e fare clic con il pulsante destro del mouse sul progetto StringLibrary e selezionare l'opzione Rimuovi. Non lo cancellerà, ma rimuoverà solo il progetto.
Ora fai clic con il tasto destro sulla cartella src e seleziona Add → Existing Project…
Passare al progetto StringLibrary che ora si trova all'interno di src cartella, seleziona il file StringLibrary.csproj file e fare clic Open.
Ora dobbiamo rimuovere il riferimento di StringLibrary dal project.json file dell'app console.
{
"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"
}
}
}
Salvare le modifiche e quindi aggiungere un riferimento di StringLibrary di nuovo nel progetto della console.
{
"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"
}
}
}
Ora tutto dovrebbe funzionare di nuovo e puoi costruire StringLibrary e poi FirstApp(progetto console) senza errori. Proviamo ora a testare la funzionalità StringLibrary utilizzando xunit. Dobbiamo aggiungere il riferimento di StringLibrary al nostro progetto di test. Fare clic con il pulsante destro del mouse sul progetto Riferimenti di StringLibraryTests e selezionare Aggiungi riferimento ...
Clic OK che aggiungerà un riferimento di StringLibraryal nostro progetto di test. Sostituiamo ora il codice seguente nel fileTests.cs file.
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());
}
}
}
Puoi vedere che abbiamo tre metodi di test che testeranno la funzionalità di StringLibrary. Facci clic sul fileRun All e vedrai il seguente output in Esplora test.
Puoi anche eseguire i test dalla riga di comando. Apriamo il prompt dei comandi ed eseguiamo il filedotnet test comando.