Palestra Testes Unidade Com JUnit
-
Upload
mrcastilho -
Category
Technology
-
view
2.493 -
download
0
description
Transcript of Palestra Testes Unidade Com JUnit
![Page 2: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/2.jpg)
Apresentação
● Robinson Castilho● Desenvolvedor C++ e Java desde 2001● Sun Certified Java Programmer● Sun Certified Web Component Developer● Fundador da Bacarin Software● Instrutor SENAC/MS● Coordenador do JUGMS
![Page 3: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/3.jpg)
Certa vez fui convidado...
![Page 4: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/4.jpg)
Certa vez fui convidado...
Pilotar novo modelode avião
![Page 5: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/5.jpg)
Avião Moderno
![Page 6: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/6.jpg)
Avião Moderno Bonito
![Page 7: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/7.jpg)
Avião Moderno BonitoInovador
![Page 8: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/8.jpg)
Avião Moderno BonitoInovador Econômico
![Page 9: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/9.jpg)
?
![Page 10: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/10.jpg)
?
![Page 11: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/11.jpg)
?
![Page 12: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/12.jpg)
?
![Page 13: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/13.jpg)
Um detalhe: o avião nunca...
![Page 14: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/14.jpg)
Um detalhe: o avião nunca...
TINHA SIDO TESTADO
![Page 15: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/15.jpg)
Olha o Avião
![Page 16: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/16.jpg)
Roubada?
![Page 17: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/17.jpg)
Roubada?
SIM
![Page 18: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/18.jpg)
Roubada?
SIM
![Page 19: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/19.jpg)
Pense no mundo real
![Page 20: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/20.jpg)
Pense no mundo real
Cliente recebe um software:
![Page 21: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/21.jpg)
Pense no mundo real
Cliente recebe um software:
Moderno
![Page 22: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/22.jpg)
Pense no mundo real
Cliente recebe um software:
Moderno
Inovador
![Page 23: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/23.jpg)
Pense no mundo real
Cliente recebe um software:
Moderno
Inovador
Econômico
![Page 24: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/24.jpg)
Pense no mundo real
Cliente recebe um software:
Moderno
Inovador
Econômico
Nunca foi testado
![Page 25: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/25.jpg)
Roubada?
![Page 26: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/26.jpg)
Roubada?
SIM
![Page 27: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/27.jpg)
Teste seu software
![Page 28: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/28.jpg)
Agenda
![Page 29: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/29.jpg)
Agenda
● Importância dos testes
![Page 30: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/30.jpg)
Agenda
● Importância dos testes● Técnicas e Fases de testes
![Page 31: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/31.jpg)
Agenda
● Importância dos testes● Técnicas e Fases de testes● Testes de Unidade
![Page 32: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/32.jpg)
Agenda
● Importância dos testes● Técnicas e Fases de testes● Testes de Unidade
– Ferramenta JUnit
![Page 33: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/33.jpg)
Agenda
● Importância dos testes● Técnicas e Fases de testes● Testes de Unidade
– Ferramenta JUnit– Boas e más Práticas
![Page 34: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/34.jpg)
Agenda
● Importância dos testes● Técnicas e Fases de testes● Testes de Unidade
– Ferramenta JUnit– Boas e más Práticas
● Tomar chopp :)
![Page 35: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/35.jpg)
Dados não mentem
![Page 36: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/36.jpg)
Dados não mentem
Erros existem:
![Page 37: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/37.jpg)
Dados não mentem
Erros existem:
1/3 poderiam ser evitados
![Page 38: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/38.jpg)
Dados não mentem
Erros existem:
1/3 poderiam ser evitados
50% são detectados em produção
![Page 39: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/39.jpg)
Dados não mentem
Erros existem:
1/3 poderiam ser evitados
50% são detectados em produção
Prejuízo de US$ ~60 bilhões/ano Fonte: http://www.nist.gov/public_affairs/releases/n02-10.htm
![Page 40: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/40.jpg)
Para que serve um teste?
![Page 41: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/41.jpg)
Verificar que uma determinada entrada
produzSEMPRE
uma mesma saída
![Page 42: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/42.jpg)
Como testar corretamente?
![Page 43: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/43.jpg)
Caixa Preta
![Page 44: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/44.jpg)
Caixa Preta
Não se preocupa com o Não se preocupa com o código fontecódigo fonte
![Page 45: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/45.jpg)
Caixa Preta
Não se preocupa com o Não se preocupa com o código fontecódigo fonte
Saídas são coerentes com as Saídas são coerentes com as entradas?entradas?
![Page 46: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/46.jpg)
Caixa Preta
Não se preocupa com o Não se preocupa com o código fontecódigo fonte
Saídas são coerentes com as Saídas são coerentes com as entradas?entradas?
Equipe testes (normalmente) Equipe testes (normalmente) é diferente da equipe é diferente da equipe
implementaçãoimplementação
![Page 47: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/47.jpg)
Caixa Branca
![Page 48: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/48.jpg)
Caixa Branca
Trabalha com o código fonteTrabalha com o código fonte
![Page 49: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/49.jpg)
Caixa Branca
Trabalha com o código fonteTrabalha com o código fonteAvalia aspectos:Avalia aspectos:
![Page 50: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/50.jpg)
Caixa Branca
Trabalha com o código fonteTrabalha com o código fonteAvalia aspectos:Avalia aspectos:● Teste de condiçãoTeste de condição● Teste de fluxo de dadosTeste de fluxo de dados● Teste de ciclosTeste de ciclos● Teste de caminho lógicoTeste de caminho lógico● Código nunca executado...Código nunca executado...
![Page 51: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/51.jpg)
Fases: Fases: Testes de Unidade
![Page 52: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/52.jpg)
Fases: Testes de UnidadeFases: Testes de Unidade
![Page 53: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/53.jpg)
Fases: Testes de UnidadeFases: Testes de Unidade
Testa o códigoTesta o código
![Page 54: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/54.jpg)
Fases: Testes de UnidadeFases: Testes de Unidade
Testa o códigoTesta o códigoPequenas unidadesPequenas unidades
![Page 55: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/55.jpg)
Fases: Testes de UnidadeFases: Testes de Unidade
Testa o códigoTesta o códigoPequenas unidadesPequenas unidadesIndependentesIndependentes
![Page 56: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/56.jpg)
Fases: Testes de UnidadeFases: Testes de Unidade
Testa o códigoTesta o códigoPequenas unidadesPequenas unidadesIndependentesIndependentes(sub-rotinas, trechos)(sub-rotinas, trechos)
![Page 57: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/57.jpg)
Teste de IntegraçãoTeste de Integração
![Page 58: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/58.jpg)
Teste de IntegraçãoTeste de Integração
Testa a integração internaTesta a integração internade um sistemade um sistema
![Page 59: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/59.jpg)
Teste de IntegraçãoTeste de Integração
Testa a integração internaTesta a integração internade um sistemade um sistema
Verifica se as peças Verifica se as peças do do quebra-cabeçasquebra-cabeças
Estão encaixadasEstão encaixadas
![Page 60: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/60.jpg)
Teste de Sistema
![Page 61: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/61.jpg)
Teste de Sistema
Ponto de vista do cliente finalcliente final
![Page 62: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/62.jpg)
Teste de Sistema
Ponto de vista do cliente finalcliente final
![Page 63: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/63.jpg)
Teste de Sistema
Ponto de vista do cliente finalcliente final
SimularSimular ambiente que o cliente utilizarácliente utilizará
![Page 64: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/64.jpg)
Teste de Aceitação
![Page 65: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/65.jpg)
Teste de Aceitação
Aprovado ou não?
![Page 66: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/66.jpg)
Teste de Aceitação
Aprovado ou não?
![Page 67: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/67.jpg)
Teste de Aceitação
Aprovado ou não?
Grupo restritoGrupo restrito
usuários finaisusuários finais
simulam o usosimulam o uso
em produçãoem produção
![Page 68: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/68.jpg)
Teste de Aceitação
Aprovado ou não?
Grupo restritoGrupo restrito
usuários finaisusuários finais
simulam o usosimulam o uso
em produçãoem produção
Determina se o sistema satisfaz os critérios estabelecidos
![Page 69: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/69.jpg)
![Page 70: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/70.jpg)
JUnit
![Page 71: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/71.jpg)
JUnitautomatizar testes de unidade
![Page 72: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/72.jpg)
JUnitautomatizar testes de unidade
Open Source
![Page 73: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/73.jpg)
JUnitautomatizar testes de unidade
Open Source
Largamente Utilizado
![Page 74: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/74.jpg)
JUnitautomatizar testes de unidade
Open Source
Largamente Utilizado
Criação rápida de testes
![Page 75: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/75.jpg)
JUnitautomatizar testes de unidade
Open Source
Largamente Utilizado
Criação rápida de testes
Diminuir necessidade de depuração
![Page 76: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/76.jpg)
JUnitautomatizar testes de unidade
Open Source
Largamente Utilizado
Criação rápida de testes
Diminuir necessidade de depuração
Integrável ao Eclipse, Netbeans, Maven...
![Page 77: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/77.jpg)
Utilizando JUnit 4
public class OlaMundoTest {@Testpublic void testSoma() {
assertEquals(10, Calc.soma(7,3));}
}
![Page 78: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/78.jpg)
Relatório no Eclipse
![Page 79: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/79.jpg)
JUnit - Ciclo de vida
*DZone RefCardz
![Page 80: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/80.jpg)
@TestInforma que é um método de testeAtributos: ● expected● timeout
![Page 81: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/81.jpg)
@Before e @AfterMétodos executados antes e após um método de teste (setUp e tearDown)
![Page 82: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/82.jpg)
@Before e @AfterMétodos executados antes e após um método de teste (setUp e tearDown)
@BeforeClass e @AfterClassMétodos executados
antes e após uma classe de teste
![Page 83: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/83.jpg)
Novidades do JUnit 4.7
![Page 84: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/84.jpg)
Novidades do JUnit 4.7Anotação: @Rule
![Page 85: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/85.jpg)
Novidades do JUnit 4.7Anotação: @RuleRedefinir e adicionar comportamentos
![Page 86: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/86.jpg)
Novidades do JUnit 4.7Anotação: @RuleRedefinir e adicionar comportamentosMecanismo de Meta-testes simples e claro
![Page 87: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/87.jpg)
@Rule● TemporaryFolder: Permite criar pastas e
arquivos que serão automaticamente deletados após o teste
public static class HasTempFolder {@Rulepublic TemporaryFolder folder= new TemporaryFolder();@Testpublic void testUsingTempFolder() throws IOException {
File createdFile= folder.newFile("myfile.txt");File createdFolder= folder.newFolder("subfolder");// ...
}}
![Page 88: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/88.jpg)
@Rule● ExternalResource: Classe base para Rules que
necessitam obter recursos externos (socket, conexão com SGBD, etc...)public static class UsesExternalResource {
Server myServer = new Server();@Rule public ExternalResource resource = new ExternalResource() {
@Overrideprotected void before() throws Throwable {
myServer.connect();}
@Overrideprotected void after() {
myServer.disconnect();};
};
@Test public void testFoo() {new Client().run(myServer);
}}
![Page 89: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/89.jpg)
@Rule● ErrorCollector: Permite que a execução do teste
continue, coletando todos os erros ocorridos
● Veja mais em: http://www.junit.org/node/574
public static class UsesErrorCollectorTwice {@Rulepublic ErrorCollector collector= new ErrorCollector();@Test public void example() {
collector.addError(new Throwable("first thing went wrong"));collector.addError(new Throwable("second thing went wrong"));
}}
![Page 90: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/90.jpg)
Boas práticas
![Page 91: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/91.jpg)
Boas práticas
● Execute os testes frequentemente
![Page 92: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/92.jpg)
Boas práticas
● Execute os testes frequentemente● Escreva um teste para o defeito
antes de corrigi-lo
![Page 93: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/93.jpg)
Boas práticas
● Execute os testes frequentemente● Escreva um teste para o defeito
antes de corrigi-lo● Escreva testes, não logs para depuração:
– System.out.println(...)– logger.info(...)
![Page 94: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/94.jpg)
Más práticas
● Múltiplos assertions. Evite isso!
public class MyTestCase { @Test public void testSomething() { assertEquals(10, Calc.soma(7,3)); assertEquals(50, Calc.multiplica(5,10)); assertEquals(30, Calc.subtrai(50,20)); }}
![Page 95: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/95.jpg)
Más práticas
● Múltiplos assertions. Forma correta:public class MyTestCase {
@Test public void testCondition1() { assertEquals(10, Calc.soma(7,3)); } @Test public void testCondition2() { assertEquals(50, Calc.multiplica(5,10)); } @Test public void testCondition3() { assertEquals(30, Calc.subtrai(50,20)); }}
![Page 96: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/96.jpg)
Más práticas
● Método errado. Evite!
assertTrue("Os objetos devem ser o mesmo", expected == actual);assertTrue("Os objetos devem ser iguais", expected.equals(actual));assertTrue("O objeto deve ser nulo", actual == null);assertTrue("O objeto não pode ser nulo", actual != null);
Use:
assertSame("Os objetos devem ser o mesmo", expected, actual);assertEquals("Os objetos devem ser iguais", expected, actual);assertNull("O objeto deve ser nulo", actual);assertNotNull("O objeto não pode ser nulo", actual);
![Page 97: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/97.jpg)
Más práticas
● Cobertura superficial– Caminho perfeito– Funcionalidades fáceis de testar– Alternativa: Code Coverage Tools
![Page 98: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/98.jpg)
Más práticas
● Testes excessivamente complexos
![Page 99: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/99.jpg)
Más práticas
● Testes excessivamente complexos
Refatorar até obter:
![Page 100: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/100.jpg)
Más práticas
● Testes excessivamente complexos
Refatorar até obter:1.Configuração
2.Declaração dos resultados esperados
3.Executar método a ser testado
4.Recuperar resultado
5.Verificar resultado encontrado X esperado
![Page 101: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/101.jpg)
Más práticas
● Capturar exceções Inesperadaspublic void testCalculation() {
try {
srv.calculate();
assertEquals(42,srv.getResult());
}catch(CalculationException ex) {
Log.error("Calculation caused exception", ex);
}
}
![Page 102: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/102.jpg)
Más práticas
public void testCalculation() throw CalculationException { srv.calculate();
assertEquals(42,srv.getResult());}
● Forma correta: Não capture exceções inesperadas
![Page 103: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/103.jpg)
Más práticas● Validando exceções. Forma correta:
@Test(expected=IndexOutOfBoundException.class)public void testIndexOutOfBoundsException() {
try {
ArrayList emptyList = new ArrayList();
Object o = emptyList.get(0);
}
}
![Page 104: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/104.jpg)
Más práticas
![Page 105: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/105.jpg)
Más práticas
Não
![Page 106: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/106.jpg)
Más práticas
Não escrever
![Page 107: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/107.jpg)
Más práticas
Não escrever Testes !!
![Page 108: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/108.jpg)
Reflexão Final
"Todo programador sabe que é capaz de escrever testes para seu código. Poucos escrevem. A resposta universal para a pergunta
"porque não?" é "Eu estou muito ocupado". Essa atitude torna-se um ciclo: quanto mais pressão você sente, menos testes você escreve.
Quanto menos testes você escreve, menos produtivo você se torna e menos estável seu código fica. Quanto menos produtivo você se
torna, mais pressão você sente".*
* http://junit.sourceforge.net/doc/testinfected/testing.htm
![Page 109: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/109.jpg)
Sobre o JUGMS
● Grupo de usuários Java do MS● Forte atuação em Campo Grande● Participa e promove eventos, palestras e
reuniões● Visite-nos: http://www.jugms.com.br
![Page 110: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/110.jpg)
Sobre o Javaneiros
● Evento sobre todas as vertentes da tecnologia Java
● + de 500 inscritos em 2008● Edição 2009
– 14 de novembro de 2009 – Campo Grande/MS– Universidade Unaes– Entrada: 1 kg de alimento– Reservas especiais para caravanas– http://javaneiros.jugms.com.br
![Page 111: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/111.jpg)
Sobre a Bacarin Software
● Residente na Incubadora de Empresas da UNIDERP
● Fornece sistemas web para:– Comércio Eletrônico– Web Sites– Gerenciamento Eletrônico de Documentos
● Visite-nos: http://www.bacarin.com.br
![Page 112: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/112.jpg)
Dúvidas?
![Page 113: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/113.jpg)
Bibliografia● http://pt.wikipedia.org/wiki/JUnit
● http://www.improveit.com.br/xp/praticas/tdd
● http://www.exubero.com/junit/antipatterns.html
● http://www.guj.com.br/java.tutorial.artigo.40.1.guj
● http://www.junit.org/junit/javadoc/3.8.1/junit/framework/Assert.html
● http://junit.sourceforge.net/doc/testinfected/testing.htm
● http://www-128.ibm.com/developerworks/opensource
/library/os-junit/?ca=dgr-lnxw07JUnite
● http://pt.wikipedia.org/wiki/Teste_de_software
● http://www.slideshare.net/jeveaux/*
● http://www.junit.org/node/574
![Page 114: Palestra Testes Unidade Com JUnit](https://reader033.fdocumentos.tips/reader033/viewer/2022051516/559894fd1a28abd9348b45cc/html5/thumbnails/114.jpg)
Licença● Este material está licenciado sob a Licença Creative-Commons
Atribuição-Uso Não-Comercial-Compartilhamento pela mesma Licença 2.5 Brasil
● Você pode:
– Copiar, distribuir, exibir e executar a obra
– Criar obras derivadas
● Sob as seguintes condições:
– Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante.
– Uso Não-Comercial. Você não pode utilizar esta obra com finalidades comerciais.
– Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta.