[MÚSICA] [MÚSICA] Esse é o Curso de Programação Orientada a Objetos com Java. Meu nome é Eduardo Guerra. E hoje vamos falar sobre uma funcionalidade do JUnit que permite que a gente execute código antes e depois de testes, ou de uma suíte de testes. Então o objetivo dessa aula é estar ensinando vocês a utilização, a criação de métodos de inicialização e finalização nos testes. Bom imagina por exemplo, que você precisa testar software, que antes de executar, ele precisar ler arquivo de configuração, então antes de executar qualquer método @teste, você tem que inicializar a classe, ou o software si com aquelas informações, ou determinado componente. Outro caso bastante comum, é por exemplo, quando a gente precisa criar objetos, ou para a gente setar na classe que a gente está criando, que a gente quer testar, ou para de repente estar passando como parâmetro para a classe que a gente quer testar. Então às vezes, esses mesmos objetos eles vão ser usados vários testes ao longo daquela execução para testar toda funcionalidade de uma determinada classe. Alguns outros casos, a gente pode ter essa questão comum, ela muitas vezes, ela pode ser depois da execução do teste. Por exemplo, se de repente a minha classe, ela abre uma conexão, que às vezes deixa aberta, ou então eu mesmo na hora de inicializar o teste eu crio essa conexão e abro ela para que a minha classe testada possa utilizar. Muitas vezes no final eu preciso fechar essa conexão, para que o próximo teste, ele possa passar por todo esse processo novamente dentro de cenário diferente. Com isso aí dá para perceber que muitas vezes, eu tenho códigos que vão executar antes do teste e códigos que vão executar depois dos testes, que pode ser comum dentro de uma suíte de teste, dentro de conjunto de testes. A gente não quer que esse código, ele fique duplicado, eu não quero por exemplo, se eu tenho que criar objeto antes, eu ter que estar criando aquele objeto antes, todos os métodos de testes. E eu também não quero por exemplo, se eu tenho que fechar uma conexão, ter que fechar essa conexão todos os métodos de teste, além de isso ser a duplicação de código que é ruim, porque se eu tenho que modificar eu tenho que modificar tudo, se alguém por exemplo, esquecer vamos supor, de fechar uma conexão, isso pode quebrar o meu próximo teste. Isso daí de repente vai me dar uma ferrada, eu vou olhar, porque esse cara está dando problema? E as vezes é porque no teste anterior, eu esqueci de fazer uma limpeza, ou porque eu não inicializei direito. Então não é desejável que eu fique duplicando esse código, isso aí as pessoas podem esquecer de colocar, ou por exemplo, vamos supor que eu tenha que dar uma manutenção, eu preciso alterar uma coisa nesse teste, vou ter que alterar vários locais, se eu esquecer de alterar isso daí também pode gerar consequências para o teste, para os próximos testes, então, não é assim que devemos fazer. Felizmente, o JUnit ele tem anotações que eu posso colocar métodos, para que eles sejam métodos de inicialização, ou seja, que eu posso utilizar ele para inicializar coisas antes do teste e eu também posso criar métodos para fazer limpeza para os próximos testes. Então, eu tenho a anotação @before, que eu posso utilizar métodos para executar antes de cada método de teste e eu tenho a anotação @after, que eu posso utilizar métodos para executar depois de cada método de teste. Então assim, para ficar mais claro, se eu tiver o teste A, o teste B e o teste C, ele vai executar o before, o teste A, depois do after, o before, o teste B, depois do after, o before, o teste C, e depois o after. Então o before e o after, eles executam antes e depois de cada método de teste. Talvez você esteja se perguntando: "E se eu precisar de uma coisa que vai rodar uma vez antes de todos os testes?" Aí você pode utilizar a anotação BeforeClass e AfterClass. Nesse caso, essa anotação, ela vai executar esse método que tem essa anotação, ele vai executar antes e depois de todos os testes, então se eu tiver o teste A, B e C, ele vai executar o BeforeClass todos os testes, e depois o que tiver o AfterClass. Então, espero que dessa forma, vocês tenham entendido como fazer, criar métodos de inicialização e finalização dentro de suítes de testes, sabendo como criar esses que são antes de todos os testes e depois de de todos os testes e aqueles que são antes e depois de cada dos testes. Muito obrigado por assistir. Fique ligado nas próximas aulas! [MÚSICA]