O que vocês usam para teste unitário?

Aerba,

o que vocês estão usando para os testes unitários?
JUnit? TestNG? JBehave?
Usam algo para criação de objetos mock?

Estou pesquisando algumas tecnologias pra ver qual se enquadra melhor às necessidades do software que vamos começar a criar os testes, gostaria de sugestões para minha pesquisa.

Obrigado,

o bom e velho public static void main…

Junit, simples e funcional.

Bacana!

JUnit não está dando conta porque o sistema é MUITO complexo e os objetos são MUITO grandes.
Está sendo usado, mas não dará conta de tudo.

O que mais vocês usam?

eai lounatico, blz??

Cara, assim, para testes unitários de objetos do seu bussiness rule use o JUnit. E para testes de objetos que manipulam dados no DB use o DBUnit.
Mas se atente para uma coisa. Testes unitários, mais que testar a funcionalidade da sua classe, serve como um auxilio para o bom desenho das mesmas.
Como a pratica do XP (Teste Driven Development) recomenda… primeiro os testes, depois as classes a serem testadas, assim vc vai ter a certeza que não está dando responsabilidades a mais a sua classe, porisso a complexidade.

Da uma olhadinha ai cara… se precisar de ajuda estamos ai!!

PS. Sei que o wikipedia não é fonte que se preze mas para fins de consulta rapida vai quebrar o galho rs.

Abração

Opa Rodrigo, beleza e aí?

Na verdade o sistema já está feito. Ele é um pouco antigo, muito grande e não possui testes unitários. Então não conseguimos medir impacto sobre ele.
Algumas classes são enormes (mesmo) e então vamos começar com um trabalho de testes unitários pra melhorar a documentação e conseguir visualizar melhor o impacto de mudanças.
Por isso o JUnit não está dando conta e por isso vamos fazer os testes depois de ter feito as classes.

De qualquer forma, muito obrigado pelas informações, e acredito que a wikipedia é sim uma fonte de pesquisa, fique tranquilo! hahaha

A entendi, é nesse caso é complicado mesmo… vcs vão ter um monte de asserções nos testes. Realmente complicado.

Um abraço velho!

Se a classe não está bem escrita os testes ficarão meio estranhos mesmo (é um indício que o código poderia ser melhor, aliás). O lado bom é que uma vez que você tem uma quantidade razoável de testes, você poderá arrumar a classe (e posteriormente os testes) com a segurança que não está introduzindo bugs.

Eu costumo usar jUnit e EasyMock/jMock no meu dia-a-dia. Para conseguir o mínimo de testabilidade no início você possivelmente terá que apelar pra mudanças em como objetos são construídos e usar até um pouco de reflection. Isso é normal, e se tudo correr bem aos poucos você será capaz de ir tirando estas gambiarras.

Isso mesmo sanches!

Mas cara, reflections?? Não seria Refactoring??

abs!

Não, é reflection mesmo (refactoring eu espero que você esteja fazendo independente dos testes). Dependendo de como suas classes estão, esta pode ser a maneira menos intrusiva de testar seus atributos num primeiro momento.

Beleza cara, valeu pelas dicas!
Vou dar uma olhada nesse EasyMock.

Alguém conhece algo que crie mock a partir de um XML?
Acredito que isso tiraria um pouco de código “bobo” do teste e facilitaria mudanças de dados nos objetos.

A ta saquei o que vc quis dizer…

Boa idéia!

[quote=lounatico]
Alguém conhece algo que crie mock a partir de um XML?
Acredito que isso tiraria um pouco de código “bobo” do teste e facilitaria mudanças de dados nos objetos.[/quote]

Aconselho escrever este código em classes auxiliares compartilhada pelos testes. Assim quando você refatorar algo, sua IDE pode tomar conta de manter estas classes atualizadas também, o que seria bem mais complicado usando XML.

Além disso, se você depende de dados neste objetos, provavelmente está se referindo a stubs, não mocks.

[quote=lounatico]Bacana!

JUnit não está dando conta porque o sistema é MUITO complexo e os objetos são MUITO grandes.
Está sendo usado, mas não dará conta de tudo.

O que mais vocês usam?
[/quote]

Lounático:

Não entendi esse negócio dos objetos serem muito grandes …

Quanto à complexidade, entendo muitas dependências, dificuldade para fazer injeção
e isolar cada classe para efeito de teste, certo ?

Neste caso, quais ferramentas usar depende em parte da arquitetura. Cada uma
das libs de mock objects tem os seus prós e contras. Entendo que vc já fez o dever
de casa e pesquisou as principais (easymock, powermock, mockito, jmockit, jmock,
mockrunner).

Fica + fácil te ajudar se vc descrever exemplos dos problemas que vc está
enfrentando para fazer os testes unitários, e dando uma idéia do que está sendo
usado na sua arquitetura.

[]s

Jorge Diz

[quote=lounatico]Bacana!

JUnit não está dando conta porque o sistema é MUITO complexo e os objetos são MUITO grandes.
Está sendo usado, mas não dará conta de tudo.

O que mais vocês usam?
[/quote]

Lounático:

Não entendi esse negócio dos objetos serem muito grandes …

Quanto à complexidade, entendo muitas dependências, dificuldade para fazer injeção
e isolar cada classe para efeito de teste, certo ?

Neste caso, quais ferramentas usar depende em parte da arquitetura. Cada uma
das libs de mock objects tem os seus prós e contras. Entendo que vc já fez o dever
de casa e pesquisou as principais (easymock, powermock, mockito, jmockit, jmock,
mockrunner).

Fica + fácil te ajudar se vc descrever exemplos dos problemas que vc está
enfrentando para fazer os testes unitários, e dando uma idéia do que está sendo
usado na sua arquitetura.

[]s

Jorge Diz

JUnit e JMock 2!
O JMock estou aprendendo a usar com o banco, mas JUnit já uso a algum tempinho quando estudo TDD.

aqui tambem

Eu uso JUnit, EasyMock e DbUnit com HSQLDb. Já usei um pouco de FIT também.

abraços

Junit