Assertion

Estou estudando sobre o uso das assertions…

pelo o q li, isso nao era para compilar…alguem sabe me falar o motivo?

public class Propagate {
	public static void main( String args[] ) {	
		Propagate s = new Propagate();
		s.doStuff(2);
	}

	private void doStuff(int i) {		
		assert(i > 5);
		System.out.println(i+" > 5");	
	}	
}

Compilar ele compila.

Mas rode com a clausula -ea na sua VM e ele vai dar um erro de execução.

costumo rodar diretamente no eclipse…

existe alguma forma de cfg no eclipse de forma q seja default, tds as classes serao exec.dessa forma?

Sim. Clica na flechinha ao lado do botão de executar, e depois em run…
Vá até a aba Arguments e em VM arguments coloque o -ea

Isso é aconselhavel? Digo, em ambiente de producao, isso eh feito?

nao tem a opcao ea la nao…

A idéia do assertions é elas não existirem em ambiente de produção, mas no desenvolvimento.
Quando você não executa a VM com essa opção, as assertions são eliminadas do código de produção.

Portanto, são testes 100% gratuitos, pode enxer o seu código deles.

A opção ea não é um checkbox. Em VM Arguments tem um baita campo de texto em branco. Lá vc digita
-ea

assertion nao há garantia de execucao… e sua funcionalidade é na parte de debug em seu codigo… tipo:


private void seta(int z){

assert(z==2): "alguem configurou z errado na linha 10";

}

porem vc precisa compilar com assertion:

javac -source 1.5 suaclass.java
java -ea suaclass //habilitando

obs.: pode usar 1.4,1.6 se usar versao antes do 1.4 assertion é um identificador válido e o recurso de assertiva nao funciona ai…

So uma dica use o prompt para testar assertivas é mais rapido e produtivo… melhor que ficar esquentando cabeça com ide… eu mesmo fazia no prompt pq o que eu considerei mais importante no estudo foi aprender assertiva que ficar brigando com a ide…

:smiley:

teclado do trabalho nao vale 1 real rs

z== ? Nao entendi…

“igual a que”?