Gerando dados de teste especializado com um gerador de dados personalizado – Parte 1

É comum em projetos termos a necessidade de ter uma base de dados de teste com dados significativos, com o Visual Studio Premium ou Visual Studio Ultimate é possível criar geradores de dados personalizados, permitindo que possamos testar com mais eficiência as alterações propostas pelo preenchimento de um banco de dados de teste com dados que representam os dados de produção o mais próximo possível. Para criar um gerador de dados personalizados podemos usar as classes do namespace Microsoft.Data.Schema.Tools.DataGenerator.

Neste exemplo vamos criar um gerador de Nomes e Sobrenomes aleatórios baseado em uma fonte de dados.

Crie uma biblioteca de classes chamada SampleDataGenerator
Crie uma biblioteca de classes chamada SampleDataGenerator

O segundo passo é adicionar referencias no projeto para:

  1. Microsoft.Data.Schema
  2. Microsoft.Data.Schema.SQL
  3. Microsoft.Data.Schema.Tools

Adicione as referencias conforme a imagem

Crie uma classe chamada NomesPessoaGenerator.cs ela deve ficar inicialmente assim:

Especifique que a classe herda de Generator:

Adicione DatabaseSchemaProviderCompatibilityAttribute, conforme o exemplo:

Agora vamos adicionar duas fontes de dados, de nomes e sobrenomes de pessoas para que o nosso gerador use. As fontes de dados serão 2 arquivos .txt com nomes e sobrenomes, que encontrei pesquisando no Google. Baixe o arquivo nomes.txt e sobrenomes.txt e adicione os dois arquivos como Resources do projeto:

Vá na Solution Explorer no seu projeto e clique em Properties e vá até a aba Resources para adicionar os arquivos.

Agora temos nosso projeto pronto para iniciarmos o desenvolvimento do nosso algoritmo. Crie as variáveis privadas que serão usadas para gerar nomes, sobrenomes e nomes completos:

Criamos as propriedades publicas para nome, sobrenome e nome completo e adicionamos o OutputAttribute à elas conforme o exemplo:

O método GerarNome:

O método GerarNome cria uma matriz de strings a partir da fonte de dados nomes.txt que está em resources e seleciona e retorna aleatoriamente uma string da matriz.

O método GerarSobrenome:

O método GerarSobrenome é um pouco mais complexo devido ao arquivo de sobrenomes ser bem desorganizado e no algoritmo faço vários tratamentos, e assim como o método anterior ele cria uma matriz de strings e retorna uma string aleatória dessa matriz.

O método GerarNomeCompleto:

O método GerarNomeCompleto pega um nome utilizando o GerarNome e mais 2 Sobrenomes utilizando o método GerarSobrenome, não tem segredo!

O Visual Studio chama o método  OnGenerateNextValues cada vez que precisa gerar algum valor da nossa biblioteca, quando criamos um gerador de dados devemos sobrescrever esse método para fornecer a lógica de cada uma das propriedades de saída. Veja o exemplo:

Ao final de todos esses passos nossa classe estará pronta e o gerador de dados estará quase pronto, em um próximo post vou explicar como configurar nossa biblioteca como uma extensão do Visual Studio.

A classe NomesPessoaGenerator deve ter ficado assim:

O projeto está hospedado no github e o link é esse: github.com/emersonsoares/SampleDataGenerator

Por enquanto é isso pessoal, até a próxima parte desta série!

Este post pode ser encontrado também em:  http://emersonsoares.me

Comentarios

comentarios