Pq os teste unitários não são tão populares!

Olá

Só que a resposta é sim. O próprio Mentawai criou testes assim.

Existem alguns softwares que fazem isto como o JUnit Factory por exemplo: http://www.agitar.com/

[]s
Luca

[quote=ramilani12][quote=pcalcado]
3) Heranças atrapalham testes da mesma maneira que composição atrapalha: quando se cria acomplamento com classes difíceis de serem testadas. O resto escrito neste tópico é FUD
[/quote]

Shoes nao entendi muito bem prq herança atrapalharia em testes por qual motivo?
No livro design Patterns (Head First) eles recomendam que de prioridade a composição em relação a heranca depois que li o captiulo abriu a minha mente em utilizar Herança[/quote]

O que eu quis dizer foi que assim como composição pode atrapalhar testabilidade se mal feita a herança também. Herança por si só não atrapaha testabilidade, depende de como é feita.

Acho que você não entendeu o que eu falei. Se você não pode refatorar o framework você ainda pode isolá-lo do seu código. Tem que implementar uma interface com mil métodos? Não faça a sua classe de negócios implementar isso, crie uma classe que implementa e atende os desejos profanos do framework mas delega para a sua classe de negócios, que é bem testada e seue bons princípios. Você até pode ter uma classe de 100 métodos mas apenas como ‘cola’ entre framework e seu código.

Agora eu não entendi como este debate caiu para herança. Além do fato de que herança por si só não prejudica testabilidade (design ruim prejudica, mas até aí…) esse papo de que ‘bom design oo evita necessidade de testes’ é tão furado hoje quanto sempre foi.

Uma recomendação para quem quer avaliar seus sistemas: http://testabilityexplorer.org/

eh que java nao tem mixins ou algum sistema de delegates. eh um problema da linguagem mesmo.

a segunda solucao que voce apresentou eh incrivelmente mais elegante que a primeira, voce mesmo reconhece.

e nao eh repeticao de codigo, eh delegacao… voce chama repetir codigo soh porque tem de copiar a assinatura de um metodo de uma interface?

[quote=Luiz Aguiar]Pras consultorias é vantajoso não ter testes antes, porque o software vai dar trocendo milhoões de problemas, eles vão ficar extendendo o prazo de entrega eternamente e a consultoria continua ganhando lá R$ 150/hora por cada desenvolvedor, qual a vantagem pra eles entregam algo de qualidade dentro do prazo?

E infelizmente é esse tipo de empresa que pega a grande maioria (chute uns 90% até) dos projetos de softwares existentes no mercado.[/quote]

Exatamente isso.
Conversando com um amigo que é gerete de projetos de uma consultoria ele me disse isso. Apesar de atrasos e encomodações, os projetos eram extremamente lucrativos, por isso a consultoria continuava a vender dessa maneira.
Essa mudança na verdade deveria partr do cliente, exigindo mudanças. Mas os proprios clientes tem medo dessa mudança. Na maioria das vezes o cliente exige saber quanto o sistema vai custar e quando vai ser entregue. Mesmo sabendo que dificilmente essas metas irão ser atingidas.

[]'s

[quote=Paulo Silveira]Sergio, usar heranca eh tao ruim quanto blocos de catch vazios, instanceofs em vez de polimorfismo, switches, metodos longos, classes so com getters e setters, etc…

[/quote]
A única coisa que eu mudaria neste teu comentário é que eu diria: usar herança errado.

Existe alguma linguagem (OO) cuja sintaxe dê ênfase na troca de mensagens?

Sem herança, sem classes, sem interfaces… Com duck typing, talvez. Ia ser interessante.

[quote=bzanchet]Existe alguma linguagem (OO) cuja sintaxe dê ênfase na troca de mensagens?

Sem herança, sem classes, sem interfaces… Com duck typing, talvez. Ia ser interessante.[/quote]

Se você não usar herança em Ruby vai ter exatamente o que precisa. Aliás, raramente se precisa de herança em algo como Ruby.

Mas ruby tem classes (e métodos estáticos).

Seria legal se tivesse pattern matching também. E se ‘function’ e ‘method’ e ‘def’ e ‘class’ não significassem nada de especial. Acho que um novo vocabulário faria mais bem do que mal (eg: bdd vs tdd :D) - mantem-se o termo ‘object’, reinventa-se o resto (dando ênfase em “troca de mensagens”, não em “funcionalidade”).

E qual o problema em ter métodos e atributos de classe já que a classe em si é um objeto?

Não, nenhum. Me referia ao vocabulário, apenas…

Eu Não entendi o ‘troca de mensagens ao inves de funcionalidade’ mas nao creio que seja dificil fazer o que voce quer com um subset do Ruby.

Porque excluiram meu post ???

:?:

[ironic]
Isso atrapalha na hora de fazer um VO e um BO?

[quote=gargula]Porque excluiram meu post ???

:?:[/quote]

Porque você já foi avisado dezenas de vezes. Se quer fazer propaganda da sua ferramenta predileta faça nos 15 tópicos sobre ela, não faça spam.