Download - Explorando Microsoft Fakes
![Page 1: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/1.jpg)
Explorando Microsoft Fakes
Waldyr FelixEspecialista em desenvolvimento webMicrosoft MVP e ALM Ranger
![Page 2: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/2.jpg)
Porque testar o software
Mais segurança nas manutenções Assegurar que o que estava funcionando
continuará funcionando Garantir que o software está cumprindo todos
os requisitos de negócio Melhorar qualidade do código Uso de boas práticas de programação
![Page 3: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/3.jpg)
Código monstro!
![Page 4: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/4.jpg)
Ninguém tem bola de cristal
![Page 5: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/5.jpg)
Pré requisitos para habilitar um código para testes
Arquitetura bem definida Separação de responsabilidades Usar interfaces Manter os métodos pequenos
![Page 6: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/6.jpg)
Arquitetura Emergente
![Page 7: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/7.jpg)
Injeção de dependência
Passar a dependência por parâmetro na classe Diminui o acoplamento entre classes Geralmente usa interfaces para fazer isso É um tipo de inversão de controle
![Page 8: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/8.jpg)
NÃO
Injeção de dependência
![Page 9: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/9.jpg)
Injeção de dependência
![Page 10: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/10.jpg)
Começando com Microsoft Fakes
![Page 11: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/11.jpg)
Stubs
Pequeno trecho de código que pode ser substituído por outro
Geralmente são métodos de uma interface No teste são criados métodos fake no lugar da
implementação Serve para isolar o sistema a ser testado Sem stubs sem testes
![Page 12: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/12.jpg)
Stubs
![Page 13: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/13.jpg)
Criando um Stub com MS Fakes
![Page 14: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/14.jpg)
Criando um Stub com MS Fakes
![Page 15: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/15.jpg)
Lidando com dependências que não podem ser isoladas
Nem sempre é possível utilizar injeção de dependência
Sistemas legados também precisam de testes unitários
Métodos estáticos (static) não podem ser tratados como stubs
Para estes cenários temos duas opções...
![Page 16: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/16.jpg)
Encapsular a dependência
![Page 17: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/17.jpg)
Usar Shim Types do MS Fakes
Torna possível testar código que antes não era “testável”
Intercepta a chamada em runtime para substituir o membro
Permite testar código que depende de chamadas estáticas, classes seladas e até métodos privados
![Page 18: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/18.jpg)
Shim
![Page 19: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/19.jpg)
Usando Shim types
![Page 20: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/20.jpg)
Cenário testando ASP.NET MVCDEMO, DEMO, DEMO, DEMO...
![Page 21: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/21.jpg)
O guia do Microsoft fakes
bit.ly/VsLiBE
![Page 22: Explorando Microsoft Fakes](https://reader035.vdocuments.pub/reader035/viewer/2022062701/553b39194a79592d278b4659/html5/thumbnails/22.jpg)
Agradecimentos
Waldyr FelixEspecialista em desenvolvimento webBlog: waldyrfelix.netTwitter: @WaldyrFelixEmail: [email protected]