Assertivas

Ola alguem pode me dar uma ideia do que seja assertivas em java ou algun site que fala respeito?
agradeco desde ja!

http://java.sun.com/j2se/1.4.2/docs/guide/lang/assert.html

muito obrigado pela rapida resposta!!mas cara ,tu nao conhece um site em portugues mesmo?

Não cara, mas dá uma pesquisada no Google, provavelmente deve haver algo!

Po… saber ingles é fundamental. Pelo menos pra ler.

Sem falar que o guj tem uma sessão de tutoriais que ninguem frequenta:
http://www.guj.com.br/java.tutorial.artigo.23.1.guj

assertivas - serve para debug no seu codigo. Por padrao elas vem desabilitadas. O uso dela é o seguinte , vamos dizer que vc fez um instrução e disse que disse que aconteça o que acontecer aquela instrução nunca pode ser false… exemplo:

if(cod()==10){}

olhando esse codigo… vamos dizer que cod() sempre deve retornar um valor == 10 no metodo cod() o valor la nunca poderá retornar um valor diferente… ai por acaso… outro programador que está no mesmo projeto que o seu… vai e muda isso dentro do metodo cod() fazendo ele retornar outro valor… ai o que vc faz? bom quero garantir… que meu codigo está ok… entao uso assertivas para testar… as partes que definir que nao pode mudar… qdo vc compila com assertivas e ativa elas… se a linha acima for diferente vai lançar uma exceção entao vc vai saber que alguem mudou aonde nao devia… hehe isso é show de bola… a desculpa para o gerente de projetos… olha na minha maquina rodou pq aqui nao? isso nao cola hehe… mais as regras de assertivas:

  • nao usar para testar metodos publicos
  • nao causar efeitos colaterais
  • a primeira instrução deve ser sempre boolean assert boolean;

espero ter ajudado…:smiley:

[quote=peczenyj]Po… saber ingles é fundamental. Pelo menos pra ler.

Sem falar que o guj tem uma sessão de tutoriais que ninguem frequenta:
http://www.guj.com.br/java.tutorial.artigo.23.1.guj[/quote]

Putz, isso que eu sempre recomendo dar uma olhada na sessão de artigos. My bad :oops:

[quote=LPJava]assertivas - serve para debug no seu codigo. Por padrao elas vem desabilitadas. O uso dela é o seguinte , vamos dizer que vc fez um instrução e disse que disse que aconteça o que acontecer aquela instrução nunca pode ser false… exemplo:

if(cod()==10){}

olhando esse codigo… vamos dizer que cod() sempre deve retornar um valor == 10 no metodo cod() o valor la nunca poderá retornar um valor diferente… ai por acaso… outro programador que está no mesmo projeto que o seu… vai e muda isso dentro do metodo cod() fazendo ele retornar outro valor… ai o que vc faz? bom quero garantir… que meu codigo está ok… entao uso assertivas para testar… as partes que definir que nao pode mudar… qdo vc compila com assertivas e ativa elas… se a linha acima for diferente vai lançar uma exceção entao vc vai saber que alguem mudou aonde nao devia… hehe isso é show de bola… a desculpa para o gerente de projetos… olha na minha maquina rodou pq aqui nao? isso nao cola hehe… mais as regras de assertivas:

  • nao usar para testar metodos publicos
  • nao causar efeitos colaterais
  • a primeira instrução deve ser sempre boolean assert boolean;

espero ter ajudado…:D[/quote]
Como posso dizer… SE FEZ LUZ NAS TREVAS!!
valeu meu amigo ajudou bastante!! uma ultima coisa no java 5 cm netbeans como faço para ativa-las?

[quote=peczenyj]Po… saber ingles é fundamental. Pelo menos pra ler.

Sem falar que o guj tem uma sessão de tutoriais que ninguem frequenta:
http://www.guj.com.br/java.tutorial.artigo.23.1.guj[/quote]

é verdade nao tiro sua razao!tenho realmente que começar amar essa lingua senao to…

agora boa pergunta… nao sei como ativa-las em netbeans e no eclipe… eu uso o prompt mesmo!! quem souber dar essa força ai :smiley:

Olá, você pode utilizar o JUnit pra fazer os asserts em seu código java. segue um link bem interessante sobre o assunto: http://pt.wikipedia.org/wiki/JUnit

abraço

Assertivas não devem ser vistas como testes e sim como garantias.
Por isso elas estão desabilitadas por default. Por default seu program está bem construido e as garantias têm que acontecer.

Algume lhe passou que a regra X sempre é true. Mas isso é o que a pessoa pensa.
Ai vc faz

if (regraX()){
  // qq coisa
} else {
 asset false, "A regraX falhou";
}

Não é que a regraX tem um bug, isso seria um teste. O que aconteceu é que a regraX tem uma exceção que a pessoa que lhe encomendou o software não sabia ou não se lembrou. Como a regraX vai falhar para essa condição o resultado do codigo é imprevisivel.

Se algum bug estranho acontecer vc liga as assertivas e vai ler a mensagem “A regraX falhou”
Isto acontece em runtime , depois que vc já entregou o software , depois dele ter passado nos teste de unidade e tudo o mais. Por isso que é uma garantia. Elas garantem que o codigo não é baseado em mentiras.

A unica forma de ativar as assertivas é no comando de execução da JVM e não depende do eclipse ou do netbeans.

[quote=sergiotaborda]Assertivas não devem ser vistas como testes e sim como garantias.
Por isso elas estão desabilitadas por default. Por default seu program está bem construido e as garantias têm que acontecer.

Algume lhe passou que a regra X sempre é true. Mas isso é o que a pessoa pensa.
Ai vc faz

if (regraX()){
  // qq coisa
} else {
 asset false, "A regraX falhou";
}

Não é que a regraX tem um bug, isso seria um teste. O que aconteceu é que a regraX tem uma exceção que a pessoa que lhe encomendou o software não sabia ou não se lembrou. Como a regraX vai falhar para essa condição o resultado do codigo é imprevisivel.

Se algum bug estranho acontecer vc liga as assertivas e vai ler a mensagem “A regraX falhou”
Isto acontece em runtime , depois que vc já entregou o software , depois dele ter passado nos teste de unidade e tudo o mais. Por isso que é uma garantia. Elas garantem que o codigo não é baseado em mentiras.

A unica forma de ativar as assertivas é no comando de execução da JVM e não depende do eclipse ou do netbeans.

[/quote]

valeu meu amigo muito obrigado!!

No Eclipse, para ativar o assert
Vá no properties do projeto,
em Run/Debug Settings selecione o main de sua aplicação(se não ouver uma, escolhe new e escolha a classe com o main(String[] args))
Com a classe main abra o edit…
Na aba (x)arguments o:
Programm Arguments será os
args[0]…args[args.length -1]
da aplicação.
na VM Arguments
você pode passar os argumentos para JVM, como o -cp para executar o classpath , -ea que significa enable assertions e outros comandos.

Espero ter ajudado a quem usa eclipse e ainda não tinha reparado.

Ótima a explicação do LPJava. Só mais alguns exemplos de locais onde é comum encontrarmos asserts:

  1. Para testar condições de métodos privados. Diferente disso, use o mecanismo de exceções convencional;
  2. Para testar verificar trechos de código que nunca deveriam ser alcançados. Exemplo:
//Uma condição que deve ser 1 ou 2.
switch (condicao):
   case 1:
      return x;
   case 2:
       return y;
}

//Aqui testamos se alguém mudou a condição
assert(false);
  1. Para indicar claramente condições que vc assume como verdadeiras. Geralmente vc seria tentado a colocar um comentário com essas condições, então use uma asserção no lugar. Exemplo:
double y = calculeAlgo(); 
assert y > 3 : y;  //Assumimos como verdade.

double x = Math.PI / y; 
assert x < Math.PI; //Pós condição
  1. Para testar pré e pós-condições.

public void adicionaProdutoVetorialALista(double x, double y, double z, double w) { double x = calculateDotProduct(new Vector4D(x,y,z,w)); assert lista != null; //Pré condição para a condição de baixo. lista.add(x); assert lista.size() > 1; //Pós condição }

Note que em todos os casos é possível continuar rodando os códigos com segurança, mesmo se o mecanismo de asserções for desligado (coisa que certamente será em seu cliente).

Para executar o comando assert com o NetBeans 6.5 faça o seguinte:

  1. va nas propriedades do seu projeto, clicando com o botão direito do mouse em cima dele e escolhendo o menu (popup) propriedades;

  2. Na TreeView, escolha a opção [EXECUTAR]

  3. No campo [opções da VM] insira o seguinte texto: -ea

  4. rode o projeto !!!

não se esqueça de que para visualizar uma assert a condicional testada por ela deve ser falsa:

assert false: "minha primeira asserção";

Muito útil… mas… acho que desde 2007 para cá ele já deve ter descoberto como fazer isso…

De qualquer forma, fica documentado no forum, caso alguma outra pessoa tenha essa mesma dúvida. Infelizmente para ele, ou felizmente para mim, eu comecei meus estudos de JAVA há 2 meses !!!

Obrigadão pela ajuda, mas é que eu sou muito novo em java e me perdi na parte do * , podia dar uma força para mim? Obrigado

[quote=Marky.Vasconcelos]No Eclipse, para ativar o assert
Vá no properties do projeto,
em Run/Debug Settings selecione o main de sua aplicação(se não ouver uma, escolhe new e escolha a classe com o main(String[] args))
Com a classe main abra o edit…
Na aba (x)arguments o:

  • Programm Arguments será os
    args[0]…args[args.length -1]
    da aplicação.
    na VM Arguments
    você pode passar os argumentos para JVM, como o -cp para executar o classpath , -ea que significa enable assertions e outros comandos.

Espero ter ajudado a quem usa eclipse e ainda não tinha reparado.[/quote]