YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Portuguese, Brazilian subtitles

← 03-38 Adding Tests To Your App

Get Embed Code
4 Languages

Showing Revision 2 created 09/29/2014 by Fran Ontanaya.

  1. Agora que você já tem alguma
    funcionalidade significante funcionando
  2. no seu aplicativo, seria um bom momento
  3. para adicionar alguns testes de unidade.
    Na pasta da
  4. Aula 3, do código que você baixou do
  5. GitHub da Udacity,
    você encontrará a pasta de teste.
  6. Esta pasta contém testes que são aplicaveis
  7. até o final da Aula 3.
    São, basicamente, testes pra
  8. funcionalidade do perfil. Você talvez não
    consiga ver, mas temos ProfileTest.java,
  9. temos ConferenceApiTest.java.
    Vá em frente e copie a pasta teste
  10. dentro da pasta fonte SRC em que estão
    seus projetos, a Central de Conferência.
  11. Você pode simplesmente arrastar e
    solta. Aqui está. Agora, eu quero que você
  12. delete o diretório alvo nesta pasta.
    Toda vez que você
  13. rodar o seu projeto, ou quando
    você o rodar no Servidor Dev
  14. ou você quando você distribui
    no appspot, a saída da
  15. construção vai toda para
    o diretório alvo. E ele
  16. acaba sendo recriado se você o deletar.
    Algumas vezes
  17. a construção anterior e os
    arquivos de saída anteriores
  18. não funcionam bem com os novos arquivos
    de saída. Então, quando em dúvida, delete
  19. o diretório alvo. Como estamos
    adicionando teste, nós queremos
  20. nos certificar de que estamos
    começando com um painel limpo.
  21. Vou deleta-lo e aqui está.
    Parece que se foi.
  22. Não por muito tempo mas,
    por enquanto se foi.
  23. Okay. Vamos agora para o Eclipse.
    Vou atualizar
  24. o projeto, já que adicionamos o
    diretório de testes e deletamos
  25. o diretório alvo.
    Okay, o alvo ainda está lá.
  26. Desta forma, sempre que você
    deletar o diretório alvo,
  27. ele é recreado quase que
    instantaneamente e já
  28. com algumas coisas.
    Mas ele não tem tudo o que
  29. ele precisa.
    Aqui embaixo no diretório fonte
  30. você agora consegue ver
    a pasta teste, e ela já tem
  31. dois testes: ProfileTest.java ,no pacote
  32. domínio, e também
    ConferenceApiTest.java no pacote SPI.
  33. Vamos dar uma olhada nos testes.
  34. Primeiramente, ProfileTest.java.
    Aqui nós temos
  35. nossa classe ProfileTest.
    Vou começar definindo
  36. alguns valores que nós vamos
    precisar nas nossas tarefas.
  37. Fazemos a inicialização, e estamos fazendo
    esta configuração. Aqui está. Nós criamos
  38. um novo perfil e nós fornecemos
    alguns valores. Depois nós
  39. temos que escolher o método,
    aquele que precisamos.
  40. E aqui está o nosso primeiro teste.
    Nós estamos testando os Getters.
  41. Bem simples. Estou apenas checando
    se os valores no perfil
  42. são de fato valores que
    nós colocamos no perfil.
  43. Depois nós checamos o que acontece
    quando nós atualizamos o perfil.
  44. Eis o que vamos fazer:
    vamos atualizar o nome
  45. de exibição e o tamanho da camiseta.
    E aí vamos checar
  46. se o nome de exibição e
    o tamanho da camiseta
  47. estão atualizados.
    Mas, na verdade, o ID de usuário
  48. e o email não devem ser atualizados.
    Eles precisam
  49. permanecer como estão.
    Esta outra função aqui possui
  50. comentários porque ela testa
    alguma funcionalidade que você
  51. não implementou ainda,
    então o teste não iria funcionar.
  52. Agora vamos dar uma olhad
    na ConferenceApiTest.java. Aqui estamos,
  53. ConferenceApiTest e, novamente,
    a primeira coisa que você precisa fazer
  54. é atribuir alguns valores para testar.
    Tenha o nosso ajudante. Configure.
  55. Neste caso, a principal coisa que
    estamos fazendo é criando um novo usuário
  56. com email e ID de usuário. Nós temos o
    método tearDown. Aí nós paramos de testar.
  57. A primeira coisa que vamos testar é
    o primeiro acesso ao pefil.
  58. Agora nós testamos salvar o perfil.
    Então, nós
  59. testamos salvar o perfil com
    valores vazios e daí em diante.
  60. Dê uma olhada nos diferentes
    testes que fazemos e aí
  61. você vai chegar em um ponto emque eles
    recebem comentários. Isto é porque
  62. eles estao testando as funcionalidades que você
  63. não implementou. Por exemplo, você não pode testar
  64. criar uma conferência porque
    nós não escrevemos função para criar
  65. uma conferência aqui.
    E enquanto você passa pela lição, você
  66. pode voltar no ConferenceApiTest.java
    e comentar as funções
  67. de teste já que as funções estão
    prontas para serem testadas.
  68. Certo, agora nós vamos
  69. rodar o projeto quando temos testes.
    Então se formos
  70. à Central de Conferência, vou usar
  71. Run As e então Run Configurations.
  72. Esta é a minha configuração para rodar
  73. o Servidor Dev no localhost.
    Como você vê
  74. aqui existe a caixa de verificação
    Skip Tests. Então, por definição,
  75. não é possível pular testes.
    Isto não importou até agora porque nós
  76. não tínhamos nenhum teste ali dentro,
    não importando, portanto
  77. se eles fossem pulados ou não.
    Mas agora os testes
  78. serão feitos. Se em algum
    momento você achar
  79. que os testes estão te bloqueando
    ou se você quiser implementar
  80. sem o teste, você pode vir aqui
    e clicar em Skip Tests mas
  81. não façamos isso. Certo, vou rodar.
    Estou rodando
  82. normalmente, vê os testes?
    Meu Servidor Dev
  83. está rodando. Deixe-me voltar e ver
    quais foram os resultados dos testes.
  84. Certo, ele rodou sete testes.
  85. Houve zero falhas, zero erros, zero que foram pulados,
  86. levou 0.415 segundos e aqui está o
  87. sumário. Bom. Está tudo certo.
  88. Mas o que acontece se você
    tiver um erro? Para testar isso,
  89. testar os testes, vamos introduzir um erro.
  90. Como estamos testando a
    funcionalidade do perfil, eu vou
  91. fazer uma das funções realizar
  92. com retornos de perfil e
    resultados inesperados.
  93. Nós temos o método getProfile e isso pega
  94. o perfil associado com o usuário logado.
  95. E para tirar a entidade de perfil do
  96. armazenamento de dados, nós temos
    que primeiramente criar uma chave.
  97. Nós especificamos a classe, que é profile.class, e então
  98. [INAUDÍVEL] ID de usuário. Mas vamos
  99. dizer que nós cometemos
    um erro, e nós colocamos
  100. o ID de usuário dentro de
    uma linha. O que é algo
  101. que pode acontecer.
    Bom, não há erro aqui.
  102. Isto é um tipo de valor
    válido aqui, portanto
  103. ele não me mostra um erro. Vamos ver o que
    acontece quando rodamos os nossos testes
  104. Agora eu vou rodar o projeto
    no localhost. Certo. desta vez
  105. nós obtivemos um erro. Falhou ao executar,
    e tivemos um erro no teste.
  106. O erro apareceu em testGetProfile.
    Sem grandes surpresas aqui.
  107. Você vê que nós temos o traço do
    empilhamento mas no final temos um sumário
  108. em que aparecem os testes, os erros
    que surgiram e quantas falhas.
  109. A outra coisa que eu quero mostrar
    a você está no seu diretório alvo.
  110. Talvez você tenha que atualizar o
    seu projeto aqui. No diretório alvo,
  111. você vê uma pasta
    chamada surefire-reports.
  112. Este diretório contém
    resultados do relatório.
  113. Então se dermos uma olhada em
    ProfileTest.txt, não é aqui
  114. onde nós tivemos nossos erros.
    Zero falhas, zero erros
  115. Se olharmos ConferenceApiTests.txt,
    uau! Muitos erros
  116. Mas aqui, falhas.
    Na verdade tem apenas um erro
  117. mas isso é traço de empilhamento.
    Abaixe um pouco
  118. Quero que você olhe
  119. para o que acontece
    com os arquivos XML.
  120. Se eu clico em
    ConferenceApiTest.xml, ele me mostra
  121. as funções que foram chamadas e aquelas
  122. que apresentaram erros ou falhas.
  123. Neste caso aqui, ele me leva
    diretamente para onde
  124. eu obtive o erro. O problema que eu
    vejo aqui é que o ID de usuário
  125. não fez o que era esperado.
    Seguirei em frente agora e vou
  126. simplesmente consertar meu código
    antes que eu esqueça. Certo. Aqui está o código
  127. que vamos consertar.
    Agora, quando eu o rodar, não
  128. obterei nenhum erro. Enquanto você
    continua a aula, certifique-se
  129. de adicionar o teste para a nova
    funcionalidade enquanto você
  130. a implementa. Em alguns casos,
    você terá que pegar
  131. o arquivo teste da pasta de aula respectiva.
    Enquanto implementa
  132. novas funções endpoint, você pode
    [incompreenssível] os testes que
  133. já estão em ConferenceApiTests.
    E se você fugir
  134. do código que escrevemos,
    por exemplo, se você adicionar
  135. suas próprias funções ou se você
    mudar o que as funções fazem,
  136. você vai precisar atualizar os testes e
    adicionar seus próprios testes para
  137. certificar-se de que você está testando a
    funcionalidade que está no seu aplicativo.