O teste de Markop é uma ferramenta de teste focada e de código aberto e gratuito para .NET . Usando testes de markop, você pode escrever facilmente testes de unidade , testes de integração , testes funcionais e testes de carga .
Para usar o teste de Markop, você deve fazer as seguintes etapas:
1- Crie um projeto de biblioteca de classes dentro da sua solução e nomeie-a de acordo com o tipo de teste que você deseja executar, por exemplo, "FunctionAltest". Não se esqueça de adicionar o projeto à sua solução.
dotnet new classlib -n [YOUR PROJECT NAME] dotnet sln add [YOUR PROJECT NAME] 3- Instale o pacote de teste Markop dentro do seu projeto de teste:
NUGET:
Install-Package MarkopTestOu usando o DOTNET CLI:
dotnet add package MarkopTest4- Dependendo do tipo de teste que você deseja executar, você deve acessar: teste de unidade, teste de integração, teste funcional ou teste de carga.
Os testes de unidade devem testar o comportamento de uma menor parte do código. O teste de Markop está aqui para tornar esse processo totalmente automatizado. Escrever testes de unidade nunca foi tão fácil antes !!
Antes de tudo, você deve criar uma classe AppFactory a estende da classe UnitTestFactory .
Então você precisa substituir os métodos de Initializer e ConfigureTestServices
O método Initializer oferece a capacidade de iniciar um banco de dados personalizado para testar tudo o que você precisa fazer é criar seu inicializador personalizado e chamá -lo aqui. O teste de Markop cuidará do resto !!
O método ConfigureTestServices oferece a capacidade de registrar/remover os serviços. Dessa forma, você terá controle total sobre os serviços registrados do seu aplicativo antes de começar a testar !!

Então você precisa criar uma aula e estendê -la da sua própria classe AppFactory
Em seguida, você deve definir um método dentro de sua classe e colocar seu atributo de teste expensável. Pode ser [Fact] ou [Theory] ou qualquer outro atributo de teste válido no Xunit.
Agora você pode começar a escrever seu código de teste dentro do seu método !!
Por exemplo, no código abaixo, escrevemos código para testar um método de extensão chamado EmailNormalize

Uma parte dos testes de software que testa componentes de código individual para validar interações entre diferentes módulos do sistema de software.
Usamos esses testes são usados para testar a infraestrutura do aplicativo e toda a estrutura, incluindo frequentemente os seguintes componentes:
O Markop fornece uma abstração de fábrica de aplicativos para facilitar a implementação de um teste de integração limpo e a saída da saída em vez de usar ferramentas externas de teste de API, como o Postman.

Antes de tudo, você deve criar uma classe AppFactory a estender da classe IntegrationTestFactory .
Em seguida, você precisa substituir os métodos Inicializador, ConfigureTeTestServices, Geturl, ValidaterSponse.
Então você precisa criar uma classe e estendê -la da sua própria classe AppFactory . Para uma implementação mais limpa, sugerimos criar uma classe para cada controlador em sua API.
Use o atrativo Endpoint para especificar um padrão para endereços de solicitação.
Em seguida, você deve definir um método dentro de sua classe e colocar seu atributo de teste expensável. Pode ser [Fact] ou [Theory] ou qualquer outro atributo de teste válido no Xunit.
Agora você pode começar a escrever seu código de teste dentro do seu método !!
Por exemplo, no código abaixo, escrevemos código para testar uma API SignIn

Atenção1 : Em variáveis de tempo de execução, como controller e action no Endpoint o atrativo será intitalizado com o nome da sua classe e o nome do seu método .
Atenção2 : O teste de Markop ignora automaticamente o ["teste", "testes", "controlador"] no final do nome da sua classe.
Por exemplo, no código acima, o valor controller será "conta" e o valor action será "assinatura". As solicitações serão enviadas para /Account/SignIn .
O teste determina a funcionalidade do produto que pode ser feita agregando testes de integração e comparando a saída real com a saída predeterminada.
Usamos cenários de caso para testes funcionais. Por exemplo, em um sistema de notícias, devemos testar cenários de gerenciamento de notícias, como criar , editar e excluir entidade de notícias, você pode implementar o fluxo de trabalho da transação em seu sistema.
Como nos testes de integração, o Markop fornece uma abstração de fábrica de aplicativos para facilitar a implementação de um teste funcional limpo .
Initializer(IServiceProvider hostServices) : O método Initializer oferece a capacidade de iniciar um banco de dados personalizado para teste. Tudo o que você precisa fazer é criar seu inicializador personalizado e chamá -lo aqui. O teste de Markop cuidará do resto !!
ConfigureTestServices(IServiceCollection services) O método ConfigureTestServices oferece a capacidade de registrar/remover os serviços. Dessa forma, você terá controle total sobre os serviços registrados do seu aplicativo antes de começar a testar !!

GetUrl(string url, string controllerName, string testMethodName) GetUrl ajuda você a criar o endereço correto para o qual o HTTPClient enviará a solicitação.
ValidateResponse(HttpResponseMessage httpResponseMessage,TFetchOptions fetchOptions) ValidateResponse permite personalizar o procceso de validação de resposta de acordo com o comportamento esperado da sua API.
Se você estiver interessado em contribuir para este projeto, antes de tudo, gostaríamos de estender minha sincera gratidão.
Sinta -se à vontade para nos alcançar se precisar de ajuda.
Mit