Fala pessoal, muitas vezes necessitamos criar massa de dados para nossos testes, como não queremos reinventar a roda e fazer isto manualmente, procuramos uma biblioteca que faça isto por nós.
Existem vários pacotes excelentes para esse propósito, uma das minhas preferidas o é o GenFu.
GenFu é uma excelente biblioteca para geração de massa de dados, na qual, você pode preencher propriedades de sua classe de forma dinamica e muito simples, fazendo o bom uso do padrão de projeto Builder.
Instalando o GenFu.
O GenFu é compativel com O .NET 4.5, .NET 4.6 e .NETStardard 1.6 ou superior.
Install-Package GenFu
.NET Core
dotnet add package GenFu
Utilizando GenFu
Existem 2 configurações bem simples e rápidas para geração de dados utilizando o GenFu que são:
var reuniao = A.New<Reuniao>();
var reunioes = A.ListOf<Reuniao>(20);
A primeira cria uma nova instancia com dados da classe Reuniao, e a segunda linha cria uma coleção de 20 registros da classe Reuniao com dados, veja os dados gerados abaixo:
Como vocês podem perceber foi gerada a lista com 20 registros de Reunião, porém, elas estão com dados um pouco distante da realidade, e nós queremos que nossos dados estejam o mais proxímos possível do real, para isto, o GenFu, possuí, um Setup bem fácil e fluente que nos possibilita realizar a configuração das suas propriedades, veja o exemplo abaixo das configurações em 2 métodos:
*Atenção: Está configuração de Setup deve ser feita antes de chamar os métodos New ou ListOf do GenFu, para que ele possa utilizar está configuração: * ;)
Como vocês podem visualizar na imagem acima, os registros foram criados baseados nas configurações pré definidas, de maneira bem legal e simples, possibilitando a criação de valores, como nomes, e-mails, telefones, redes sociais, outras coleções e muito mais !!!
Customizando GenFu
Uma outra coisa bacana que o GenFu oferece, é a possibilidade de customizar configurações de forma bem simples, utilizando o nome da propriedade como base para o uso do método Filler. Veja abaixo um exemplo, no qual estamos customizando a geração de dados de WebSites.
Como podemos visualizar acima, nós definimos as tags, website, site, web, webaddress, url com chaves para geração de dados, e no método GetValue nós já utilizamos um padrão de geração de dominios existente e adicionamos o https e www.
Para aplicar essa configuração basta, informar a seguinte configuração:
A.Default().FillerManager.RegisterFiller(new WebsiteFiller());
Ao Executar nossos testes, podemos perceber que foi preenchido corretamente o Filler personalizado que definimos.
Conclusão
O GenFu é um excelente package que pode te auxiliar a geração de dados seja para seus testes ou aplicação que deseje realizar validação de massa de dados de forma simples e rápida, com uma linguagem simples e fluente.
Não deixe de ver nas referências o código fonte dos códigos demonstrados neste post.
Abraços !!
Referências
MisterJames / GenFu
GenFu is a library you can use to generate realistic test data. It is composed of several property fillers that can populate commonly named properties through reflection using an internal database of values or randomly created data. You can override any of the fillers, give GenFu hints on how to fill them.
GenFu
GenFu is a library you can use to generate realistic test data. It is composed of several property fillers that can populate commonly named properties through reflection using an internal database of values or randomly created data. You can override any of the fillers, give GenFu hints on how to fill them.
GenFu is all about smartly building up objects to use for test and prototype data. It will walk your object graph and fill in the properties on your type with realistic looking data.
Use GenFu's static methods to new up new objects for testing, design-time data or seeding a database.
GenFu runs on AspNetCore50 and can run anywhere core can run.
Installation
GenFu is on NuGet so you can easily add it to your project from the Package Manager Console:
install-package GenFu
Example Usage
Let's say you have a Person class like so:
class Person
{
…
Top comments (0)