[MÚSICA] [MÚSICA] Olá a todos, meu nome é Eduardo Guerra, estamos aqui no curso de Orientação a Objetos com Java. Hoje vamos ver pouquinho mais sobre testes automatizados, hoje vamos como utilizar aqueles métodos de inicialização, finalização e entender como que eles funcionam, qual é a ordem que eles são chamados. Para isso a gente vai fazer exercÃcio que a gente vai criar uma classe de testes com 3 testes, todos esses métodos de Before, BeforeClass, o After, o AfterClass e vamos ver a ordem que isso daà executa, então vamos fazer uma brincadeira aqui, não vamos criar exatamente teste, mas para a gente fixar e ver na prática como, qual é a ordem que esses métodos são invocados pelo JUnit. Está pronto? Vamos criar aqui então projeto, novo projeto, vou chamar aqui de AntesDepois. Nessa aula aqui eu vou mostrar jeito talvez pouco mais simples de adicionar o JUnit no seu projeto. Simplesmente se você não tem o JUnit ainda aà você manda adicionar caso de teste do JUnit está? Eu vou criar aqui o AntesDepois certo? Quando eu der finish ele vai me perguntar, está vendo, se eu quero que adicione o JUnit no class path do projeto. Class path seria ali os locais onde ele vai procurar bibliotecas, onde vai procurar classes, está certo? Então eu confirmo aqui e eu posso ver aqui que ele adicionou o JUnit aqui, era o que eu queria, está? Então o que eu vou fazer? Eu vou criar 3 testes certo? E eu vou imprimir aqui cada vou botar aqui teste A, vamos botar 1 aqui, eu vou colocar igualzinho está no método, não é? Então teste 1, o teste 2 e o teste 3, certo? Então ele vai imprimir aqui. Então se eu mandar o JUnit rodar essa classe, ele vai ter que rodar os 3 testes está? Então se eu der play aqui ele vai executar, está certo? Ele rodou aqui os testes, não é, como a gente não está testando nada ok? Mas ele está imprimindo aqui no console Teste 1, Teste 2 e o Teste 3, está? Então eu vou adicionar agora aqui método que vai ter o Before, certo? Então eu vou criar aqui public void Before. No caso método não precisa chamar Before, ele pode ter qualquer nome, eu estou colocando Before aqui simplesmente para a gente saber não é? Certo, então vou colocar aqui ele rodou o método que tem o @Before. No caso aqui eu preciso importar, eu vou usar o próprio Eclipse aqui a ajuda do Eclipse para importar esse Before, certo? Vou colocar aqui também método After, certo? Vou chamar o método com o mesmo nome, de After, e vou imprimir, opa faltou o s aqui, vou imprimir o @After aqui. Então vou salvar faltou aqui importar o After, certo? Então eu salvo, eu vou rodar, vamos ver o que é que ele vai estar imprimindo ali no console, certo? Note que antes de cada teste ele roda o Before antes e o After depois, está? Então ele vai rodar Before, Teste 1, After, Before, Teste 2, After, Before, Teste 3, After certo? Vamos ver agora como que se comporta métodos que tem o BeforeClass já vou pedir uma ajuda aqui para o Eclipse achar essa classe para mim, certo? Ele achou, public void BeforeClass está? Então eu vou imprimir aqui o @ opa BeforeClass certo? E eu vou colocar aqui da mesma forma o AfterClass, certo? Já pedi para o Eclipse adicionar ali para mim também, certo? Então AfterClass vou estar adicionando aqui, mandando imprimir, está? Só para vocês não falarem que eu estou, que sou daqueles professores que falam que " eu errei de propósito" e na verdade errou mesmo eu vou falar aqui que vai dar erro está? Então eu estou errando mesmo de propósito aqui para vocês verem, está? Bom quando eu rodar aqui, certo? Ele tem que dar esse problema "Initialization error" está? Então note que ele fala aqui o método BeforeClass ele tem que ser estático está? E o método AfterClass também tem que ser estático. Essa foi uma questão aqui que eu não, preferi deixar para a aula prática e não dei muita ênfase durante a aula que eu falei sobre isso está? Mas tanto o método BeforeClass quanto o AfterClass ele tem que ser estático então eu vou colocar os métodos aqui como estático está? Isso aqui é uma exigência aqui do próprio JUnit está? E agora sim eu vou rodar e eles, e vai funcionar, está? Note que diferente do AfterClass e do BeforeClass, diferente do Before e do After, o BeforeClass ele vai rodar antes de todos os teste e o AfterClass ele vai rodar depois de todos os testes, uma vez só cada. Diferente do After e o Before que ele roda uma vez para cada teste, está? Então o objetivo dessa aula é que você não esqueça mais essa ordem, não é? A diferença do Before, do After, do BeforeClass e do AfterClass, vendo assim na prática como que a ordem aqui que é executado, que você não esqueça mais essa, esse detalhe aà das classes de teste que a gente vai utilizar bastante nos próximos exercÃcios daqui para a frente no curso inteiro, está ok? Continue ligado no nosso curso, muito obrigado por assistir à aula. [MÚSICA]