não é para testar, é para assegurar, é um pouco diferente…
por exemplo, vc esta em um ponto interno da sua classe, onde vc tem certeza que ali nunca vai entrar um int chamado "var" menor que zero, então vc coloca um
assert(var >= 0);
ali em desenvolviemento, vc tem como rodar o programa com os assertions ligados, onde esta garantido que ali nunca tera var menor que zero, e fazer suas coisas sem constantemente checar e tratar, pois vc ja tem certeza que nunca ocorrera, e caso encontre um var < 0 … um ERROR sera lançado, parando seu aplicativo, que vc esta rodando, e assim debugar o problema no ato… talvez esse int negativo, possa gerar um erro muito + na frente, que torne mais dificil de localizar o problema…
e quando vc coloca um assert, vc esta afirmando, que qualquer coisa diferente dakilo não é esperado, não é uma exceção e sim um erro, houve uma falha no desenvolvimento que levou aquele valor…
o objetivo do assert é colocar marcações nas suas classes com afirmações sobre um stado que vc tem certeza que nunca sera false…
os asserts são desligados quando se faz a destribuição, esses testes somem, e não consomem processo nem tratamento algum, pois assume-se que eles não ocorrerão…
por isso não é boa pratica colocar asserts em métodos publicos, pois vc nunca saberá o que outra classe vai enviar para dentro de sua classe, não da pra presumir que um método publico que vc criou, sempre receberá valor não nulos, o correto é verificar e tratar isso… porem dentro da sua classe, vc pode assumir que vc nunca enviará um valor nulo pra dentro de outro método que é private… por exemplo
[code]public boolean equals(Object o) {
return o instanceof Pessoa && equals((Pessoa)o);
}
//método private
private boolean equals(Pessoa other) {
assert(other != null); //vc garante que nunca será enviado other == null, o método é private
//e vc checou antes com o instanceof Pessoa, portanto assegura que nunca receberá nulo.
return getId() == null ? false : getId().equals(other.getId());
}[/code]
qualquer outro método que for usar esse equals privado, deve assegurar de não enviar pra ele um objeto null, pois dentro do método não é teste quanto a isso
…
tb to estudando pro SCJP to no capitulo 8 do livro… to sempre pelo MSN, se quiser me adciona… jaja vou entrar na segunda leitura do livro ^^
qualquer coisa manda PM q passo o msn