.NET Core - Biblioteca de Teste
Neste capítulo, vamos testar nossa StringLibrary e, para isso, precisamos reorganizar nossos projetos para que possamos seguir a convenção padrão.
Vamos abrir o global.json Arquivo.
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-preview2-003131"
}
}
No topo deste arquivo, você verá as configurações do projeto e ele configura algumas pastas, como src e test por padrão.
Como por convenção, devemos ter projetos nessas pastas, esta é a nova convenção e que será usada como parte do .NET Core.
No Solution Explorer, você pode ver que tanto o projeto do console quanto o projeto da biblioteca estão dentro do src pasta enquanto o projeto de teste está dentro test pasta.
E a estrutura de projetos no Solution Explorer não representa onde os projetos existem fisicamente no disco. Vamos agora abrir a pasta Solução e você verá queStringLibrary projeto não está dentro do src pasta.
Você pode ver que ambos src e test as pastas são mapeadas para a convenção especificada no global.jsonArquivo. No entanto, temos um projeto StringLibrary que está fora da convenção. Vamos agora adicionar oStringLibrary projeto dentro do src pasta.
Na pasta src, temos dois projetos e precisamos corrigir o problema para que possamos usar todos os projetos corretamente. Vamos voltar ao Visual Studio e clicar com o botão direito do mouse no projeto StringLibrary e selecionar a opção Remover. Não o excluirá, mas apenas removerá o projeto.
Agora clique com o botão direito na pasta src e selecione Add → Existing Project…
Navegue até o projeto StringLibrary que agora está dentro do src pasta, selecione o StringLibrary.csproj arquivo e clique Open.
Agora temos que remover a referência de StringLibrary de project.json arquivo do aplicativo de 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"
}
}
}
Salve as alterações e adicione uma referência de StringLibrary novamente em seu projeto de 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"
}
}
}
Agora tudo deve estar funcionando novamente e você pode construir StringLibrary e depois FirstApp(projeto de console) sem nenhum erro. Vamos agora testar a funcionalidade StringLibrary usando xunit. Precisamos adicionar referência de StringLibrary em nosso projeto de teste. Clique com o botão direito do mouse no projeto References of StringLibraryTests e selecione Add Reference…
Clique OK que irá adicionar uma referência de StringLibraryao nosso projeto de teste. Vamos agora substituir o seguinte código noTests.cs Arquivo.
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());
}
}
}
Você pode ver que temos três métodos de teste que testarão a funcionalidade da StringLibrary. Vamos clicar noRun All link e você verá a seguinte saída no Test Explorer.
Você também pode executar os testes na linha de comando. Vamos abrir o prompt de comando e executar odotnet test comando.