Dúvidas sobre técnicas/padrões usados para realização de testes unitários.

35 views
Skip to first unread message

Forum Doubts

unread,
Oct 23, 2012, 8:00:53 PM10/23/12
to dotnetar...@googlegroups.com
Olaa,

            Sou iniciante em TDD, tenho lido muito a respeito, e vejo se falar muito dos benefícios dos Testes Unitários, mock e stub, mas todos os artigos que eu leio a única Técnica citada para conseguir desacoplar minhas classes de forma a utilizar um mock ou stub  para ficar independente de minhas dependências e poder realizar  REALMENTE testes unitários é a Injeção de dependência, diante disso segue abaixo algumas dúvidas:

1) A injeção de dependencia é a única forma de me manter desacoplado/livre de minha dependencia de forma a me possibilitar usar um mock ou stub para realizar testes unitários ? 

2) Se a resposta da pergunta anterior for Não. Qual outra técnica ou padrão de projeto me possibilitaria usar um mock ou stub  para simular uma dependencia de forma que eu pudesse 
usar os mesmos e criar testes unitários para um determinado método em uma classe que precisa dessa dependencia para desempenhar sua função  ?


De antemão, agradecido.

Atenciosamente.

Guilherme Froes

unread,
Oct 23, 2012, 8:13:27 PM10/23/12
to dotnetar...@googlegroups.com
1) Sim. Se a dependência é criada dentro do código sob teste, como ele vai ser substituído por um fake (mock ou stub) no teste? Essa dependência deve vir de fora (injetada), possibilitando a substituição.

PS. Cara, você se importaria de assinar suas mensagens com seu nome? É meio estranho conversar com um 'Forum Doubts'. Se esse for seu nome mesmo, parabéns!, é o nome mais legal que eu já vi! :)

--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br

Guilherme Froes

unread,
Oct 23, 2012, 8:14:58 PM10/23/12
to dotnetar...@googlegroups.com
Ops, corrigindo:

Sim. Se a dependência é criada dentro do código sob teste, como ela (a dependência) vai ser substituído por um fake..

Daniel Moreira Yokoyama

unread,
Oct 23, 2012, 8:17:57 PM10/23/12
to dotnetar...@googlegroups.com
Em 23 de outubro de 2012 22:00, Forum Doubts <forum...@gmail.com> escreveu:
mas todos os artigos que eu leio a única Técnica citada para conseguir desacoplar minhas classes de forma a utilizar um mock ou stub  para ficar independente de minhas dependências e poder realizar  REALMENTE testes unitários é a Injeção de dependência, diante disso segue abaixo algumas dúvidas:

É um pouco pelo contrário: TDD é uma das formas de vc identificar dependências que podem ser injetadas, e os Mocks e Stubs te ajudam a manter a testabilidade da sua unidade de código, ou seja, desfazendo suas afirmações: Não, mocks e stubs não te garantem desacoplamento, mas quando vc usa TDD, ele te ajuda a identificar dependências e pode fazer uso de mocks e stubs para que seus testes unitários sejam realmente unitários.

leitura recomendada (e velha):

1) Não. Existem outras formas, e tem até uma thread sobre o uso de frameworks de DI que pode te ajudar a entender melhor isso (não só a injeção de dependência em si, mas o uso de frameworks para resolvê-la, e até a discussão de outras formas de Inversion Of Control).

2) Service Locator (embora ninguém goste muito de usá-lo), Factories, e outros, são exemplo de uso de Inversion of Control... mas como respondi anteriormente, isso não é o que garante que seus testes sejam realmente unitários. Você está confundindo Inversion Of Control, com Mocks e Stubs... apesar de Mocks e Stubs serem usados nos testes sendo injetados, eles não são forma de implementar IoC... eles te dão testabilidade.



 

1) A injeção de dependencia é a única forma de me manter desacoplado/livre de minha dependencia de forma a me possibilitar usar um mock ou stub para realizar testes unitários ? 

2) Se a resposta da pergunta anterior for Não. Qual outra técnica ou padrão de projeto me possibilitaria usar um mock ou stub  para simular uma dependencia de forma que eu pudesse 
usar os mesmos e criar testes unitários para um determinado método em uma classe que precisa dessa dependencia para desempenhar sua função  ?


De antemão, agradecido.

Atenciosamente.

--

Forum Doubts

unread,
Oct 23, 2012, 8:19:02 PM10/23/12
to dotnetar...@googlegroups.com
Caro Guilherme Froes,

          Sem problemas, irei assinar as mensagens com meu nome.

Atenciosamente.

2012/10/23 Guilherme Froes <guilher...@gmail.com>

Guilherme Froes

unread,
Oct 23, 2012, 8:43:49 PM10/23/12
to dotnetar...@googlegroups.com
Amigo Forum,

o Daniel tem razão, respondi pensando na técnica que eu uso, mas realmente DI não é a única técnica que te permite usar fakes. O importante para conseguir testabilidade não é técnica em si, mas o conceito de não depender de uma implementação da dependência e sim de uma abstração, que possa ser substituída no teste.

Acompanho o Daniel sugerindo a leitura outro artigo do Fowler sobre isso: http://martinfowler.com/articles/injection.html
Reply all
Reply to author
Forward
0 new messages