Às vezes em nossos projetos temos que preencher objetos Java para testes unitários ou até mesmo criar um dump de banco de dados com dados aleatórios para testar uma característica específica e etc. Precisamos ser criativos tentando criar nomes, nomes de ruas, cidades ou documentos.
Existe uma biblioteca Java interessante e útil chamada Datafaker que permite criar dados aleatórios com um grande número de provedores.
Provedores são objetos baseados em um contexto, por exemplo:
Se você deseja gerar dados para o objeto person, existe um provedor específico para este contexto que irá gerar nome, sobrenome e etc.
Neste post vamos criar alguns exemplos usando Maven como gerenciador de dependências Java, mas a biblioteca também fornece suporte para projetos Gradle.
Maven
<dependency>
<groupId>net.datafaker</groupId>
<artifactId>datafaker</artifactId>
<version>1.1.0</version>
</dependency>
Gerando Dados aleatórios
Vamos criar uma classe Java simples que contém algumas propriedades como nome, sobrenome, endereço, gênero musical favorito e comida.
public class RandomPerson {
public String firstName;
public String lastName;
public String favoriteMusicGenre;
public String favoriteFood;
public String streetAddress;
public String city;
public String country;
@Override
public String toString() {
return "firstName=" + firstName + "\n" +
"lastName=" + lastName + "\n" +
"favoriteMusicGenre="+favoriteMusicGenre + "\n" +
"favoriteFood=" + favoriteFood + "\n" +
"streetAddress=" + streetAddress + "\n" +
"city=" + city + "\n" +
"country=" + country ;
}
static void print(RandomPerson randomPerson){
System.out.println(
randomPerson
);
}
}
No próximo passo, vamos preencher um objeto usando os provedores que citamos na primeira seção. Primeiramente, criamos um objeto chamado randomData do tipo Faker, pois é nesta classe que contém todos os provedores no exemplo abaixo.
public static void main(String[] args) {
Faker randomData
= new Faker();
RandomPerson randomPerson
= new RandomPerson();
randomPerson.firstName
= randomData.name().firstName();
randomPerson.lastName
= randomData.name().lastName();
randomPerson.favoriteMusicGenre
= randomData.music().genre();
randomPerson.favoriteFood
= randomData.food().dish();
randomPerson.streetAddress
= randomData.address().streetAddress();
randomPerson.city
= randomData.address().city();
randomPerson.country
= randomData.address().country();
print(randomPerson);
}
Após a execução, podemos ver os resultados como este no console:
Resultado
firstName=Dorthy
lastName=Jones
favoriteMusicGenre=Electronic
favoriteFood=Cauliflower Penne
streetAddress=7411 Darin Gateway
city=Gutkowskifort
country=Greece
Cada execução será um novo resultado porque os provedores são aleatórios. Outra funcionalidade interessante é que podemos configurar o Locale ao instanciar um objeto.
Faker randomData
= new Faker(Locale.JAPANESE);
Veja os resultados com base no Local.JAPANESE:
Resultado
firstName=航
lastName=横山
favoriteMusicGenre=Non Music
favoriteFood=French Fries with Sausages
streetAddress=418 美桜Square
city=南斉藤区
country=Togo
Material de estudo
Se quer aprender mais sobre o assunto e alcançar um alto nível de conhecimento, recomendo fortemente a leitura do(s) seguinte(s) livro(s):
Unit Testing Principles, Practices, and Patterns: Effective Testing Styles, Patterns, and Reliable Automation for Unit Testing, Mocking, and Integration Testing with Examples in C# (Versão Inglês) é um livro que cobre Princípios, Padrões e Práticas de Testes unitários. Ensina a projetar e escrever testes que visam áreas-chave do seu código, incluindo o modelo de domínio. Neste guia escrito de forma clara, você aprenderá a desenvolver testes e conjuntos de testes de qualidade profissional e a integrar testes em todo o ciclo de vida do aplicativo.
Junit em Ação é um livro de testes popular que cobre técnicas como teste prático de seu código, usando técnicas de testes unitários e muito mais. É através da prática de testes que garantimos uma entrega de qualidade do software ao cliente final, garantindo a execução do Build e Deploy.
Mastering Unit Testing Using Mockito and JUnit (Versão Inglês) é um livro que cobre as práticas do JUnit usando uma das mais famosas bibliotecas de teste chamada Mockito. Este livro ensina como criar e manter testes unitários automatizados utilizando recursos avançados do JUnit com o framework Mockito, práticas de integração contínua (famoso CI) utilizando ferramentas de mercado como Jenkins junto com um dos maiores gerenciadores de dependências em projetos Java, o Maven. Para você que está começando nesse mundo, é uma excelente escolha.
Bom é isso, espero que tenham gostado!
Comments