JUnit vale a pena?

Eu tava olhando a api do JUnit p/ testes e alguns exemplos, daí entendi blz e tals, mas eu queria saber qual as suas vantagens, pq eu axei meu parecido como debugar o programar e verificar as variáveis, sendo que no debug vc economiza mais tempo pq n eh necessário escrever classes (código) p/ testar, o q vcs axam?

Se você debugar todo código uma e somente uma vez, junit não tem muita vantagem mesmo. Mas e se você quiser rodar todos os testes que você escreveu de hora em hora?

junit serve para fazer testes unitarios.

é totalmente diferente de debugar um programa. vc planeja os testes para testar so seus metodos, os valores corretos, as situações certas, as possiveis exceptions. ai se vc faz uma alteração minima vc roda os testes pra ver se está tudo ok, novamente.

vc pensa na sua aplicação + testes unitarios.

eh realmente p testes unitarios em metodos especificos em 1 programa complexo, talvez seja 1 vantagem do q debugar o programa todo, vlws ai a cooperacao…

Suponha que você tenha um sistema com 100 classes supostamente testadas por você no debugger e seu sistema tá rodando certinho. Aí chega o cliente e pede uma alteração na qual você precise mexer em 70 dessas classes. Como você vai garantir que tudo continua funcionando direito? Que as integração entre as classes funciona certinho?

Com testes unitários implementados, você altera o código mais segurança, por que os testes te avisam quando algo foi quebrado. Além de funcionar também como documentação, por que pra saber como usar algo é só ir lá e ver como ele é testado.

Procura sobre “refactoring” pela web, até aí que no fórum mesmo, é um assunto muito interessante de estudar.

Suponha que você tenha um sistema com 100 classes supostamente testadas por você no debugger e seu sistema tá rodando certinho. Aí chega o cliente e pede uma alteração na qual você precise mexer em 70 dessas classes. Como você vai garantir que tudo continua funcionando direito? Que as integração entre as classes funciona certinho?

Com testes unitários implementados, você altera o código mais segurança, por que os testes te avisam quando algo foi quebrado. Além de funcionar também como documentação, por que pra saber como usar algo é só ir lá e ver como ele é testado.

Procura sobre “refactoring” pela web, até aí que no fórum mesmo, é um assunto muito interessante de estudar.[/quote]

blz, p teste unitario possa ser 1 vantagem sim, masse nesse teu caso, eu poderia rodar o debbuger e fazer ele andar pelas classes mostrando os valores das variaveis.

A palavra é automatizar. Você quer automatizar os testes com JUnit, você não quer ter que inspecionar variável por variável no olho. Se você construir um debugger que verifica automaticamente que um certo programa rodou corretamente, pronto - você já está tomando a mesma direção do JUnit.

Além do mais, tem uma diferença fundamental entre teste e debug. Teste é para tentar quebrar o programa, debug é para descobrir porque ele quebra (sob um determinado caso de teste). Então debugger não vale nada sem caso de teste.

[edit]
Só como uma observação, você disse lááá em cima…

Tem uma hipótese implícita aqui de que teu programa vai simplesmente “rodar”. Prá você poder inspecionar alguma coisa, entretanto, teu programa vai ter que rodar numa situação específica - um caso de teste. Então tua premissa de que não é necessário escrever código para testar com o debugger é falsa. A única diferença entre usar o debugger e o JUnit, nesse caso, é na maneira adotada para inspecionar o estado da aplicação e verificar que ele é correto. Eu poderia apresentar argumentos contra e a favor de se usar um debugger ou o JUnit mas, de qualquer forma, é preciso automatizar.

[/edit]

Abraços,

[quote=Giuliano Mega][quote]
blz, p teste unitario possa ser 1 vantagem sim, masse nesse teu caso, eu poderia rodar o debbuger e fazer ele andar pelas classes mostrando os valores das variaveis.
[/quote]

A palavra é automatizar. Você quer automatizar os testes com JUnit, você não quer ter que inspecionar variável por variável no olho. Se você construir um debugger que verifica automaticamente que um certo programa rodou corretamente, pronto - você já está tomando a mesma direção do JUnit.

Além do mais, tem uma diferença fundamental entre teste e debug. Teste é para tentar quebrar o programa, debug é para descobrir porque ele quebra (sob um determinado caso de teste). Então debugger não vale nada sem caso de teste.

Abraços,[/quote]

ok, mas vc pode testar o programa inserindo os dados no console e vendo o resultado q sai no console tb, mas td eh semelhante.

[quote=hlds][quote=Giuliano Mega][quote]
blz, p teste unitario possa ser 1 vantagem sim, masse nesse teu caso, eu poderia rodar o debbuger e fazer ele andar pelas classes mostrando os valores das variaveis.
[/quote]

A palavra é automatizar. Você quer automatizar os testes com JUnit, você não quer ter que inspecionar variável por variável no olho. Se você construir um debugger que verifica automaticamente que um certo programa rodou corretamente, pronto - você já está tomando a mesma direção do JUnit.

Além do mais, tem uma diferença fundamental entre teste e debug. Teste é para tentar quebrar o programa, debug é para descobrir porque ele quebra (sob um determinado caso de teste). Então debugger não vale nada sem caso de teste.

Abraços,[/quote]

ok, mas vc pode testar o programa inserindo os dados no console e vendo o resultado q sai no console tb, mas td eh semelhante.[/quote]

Mas para isso, suponhamos, tu teria o programa completo, certo?

[quote=hlds]
ok, mas vc pode testar o programa inserindo os dados no console e vendo o resultado q sai no console tb, mas td eh semelhante.[/quote]

Quantas vezes num dia vcê consgue testar uma classe manualmente sem encher o saco? Mesmo que não enchesse o saco e parasse de testar, não é mais barato se você gastar tempo escrevendo código de teste uma vez e testando ao clicar num botão?

Esse é o ponto emt estes automatizados, sejam unitários ou não, seja com JUnit ou não. Testes manuais são ineficientes e caros.

Olá, gente se alguém puder ajudar …

http://www.guj.com.br/posts/list/34906.java