test - junit javadoc assert




O que a palavra-chave "assert" faz? (6)

Use esta versão da instrução asser para fornecer uma mensagem detalhada para o AssertionError. O sistema transmite o valor de Expression2 para o construtor AssertionError apropriado, que usa a representação de string do valor como a mensagem detalhada do erro.

O objetivo da mensagem detalhada é capturar e comunicar os detalhes da falha de declaração. A mensagem deve permitir diagnosticar e, por fim, corrigir o erro que levou a declaração a falhar. Observe que a mensagem detalhada não é uma mensagem de erro no nível do usuário, portanto, geralmente é desnecessário tornar essas mensagens compreensíveis de forma isolada ou internacionalizá-las. A mensagem detalhada deve ser interpretada no contexto de um rastreio de pilha completo, em conjunto com o código-fonte que contém a asserção com falha.

JavaDoc

Esta questão já tem uma resposta aqui:

O que assert fazer? Por exemplo, na função:

private static int charAt(String s, int d) {
    assert d >= 0 && d <= s.length();
    if (d == s.length()) return -1;
    return s.charAt(d);
}

As asserções são geralmente usadas principalmente como um meio de verificar o comportamento esperado do programa. Isso deve levar a uma falha na maioria dos casos, uma vez que as suposições do programador sobre o estado do programa são falsas. É aí que entra o aspecto de depuração das asserções. Elas criam um ponto de verificação que simplesmente não podemos ignorar se quisermos ter um comportamento correto.

No seu caso, ele faz a validação de dados nos parâmetros de entrada, embora isso não impeça que os clientes façam uso indevido da função no futuro. Especialmente se eles não forem (e não devem) ser incluídos nas versões de lançamento.


Embora eu tenha lido muita documentação sobre este, ainda estou confuso sobre como, quando e onde usá-lo.

Faça com que seja muito simples de entender:

Quando você tem uma situação semelhante como esta:

    String strA = null;
    String strB = null;
    if (2 > 1){
        strA = "Hello World";
    }

    strB = strA.toLowerCase(); 

Você pode receber um aviso (exibindo linha amarela em strB = strA.toLowerCase ();) que strA pode produzir um valor NULL para strB. Embora você saiba que strB é absolutamente não será nulo no final, apenas no caso, você usa assert to

1. Desative o aviso.

2. Erro de exceção de lançamento, se o pior acontecer (quando você executar o aplicativo).

Às vezes, quando você compila seu código, você não obtém seu resultado e é um erro. Mas o aplicativo não irá travar, e você gasta um tempo muito difícil para descobrir onde está causando esse bug.

Então, se você colocar afirmação, assim:

    assert strA != null; //Adding here
    strB = strA .toLowerCase();

você diz ao compilador que strA não é absolutamente um valor nulo, pode "pacificamente" desligar o aviso. Se for NULL (o pior caso acontece), ele irá parar o aplicativo e lançar um bug para você localizá-lo.



Se você iniciar seu programa com -enableassertions (ou -ea para breve), então esta declaração

assert cond;

é equivalente a

if (!cond)
    throw new AssertionError();

Se você iniciar seu programa sem essa opção, a instrução asser não terá efeito.

Por exemplo, assert d >= 0 && d <= s.length(); , como postado em sua pergunta, é equivalente a

if (!(d >= 0 && d <= s.length()))
    throw new AssertionError();

(Se você lançou com -enableassertions que é.)

Formalmente, a especificação da linguagem Java: 14.10. A instrução assert diz o seguinte:

14,10. A assert afirmação
Uma afirmação é uma declaração de declaração contendo uma expressão booleana. Uma declaração é ativada ou desativada . Se a asserção estiver ativada, a execução da asserção causará uma avaliação da expressão booleana e um erro será relatado se a expressão for avaliada como false . Se a asserção estiver desabilitada, a execução da asserção não terá efeito algum.

Onde "ativado ou desativado" é controlado com a opção -ea e "Um erro é relatado" significa que um AssertionError é lançado.

E, finalmente, um recurso menos conhecido de assert :

Você pode acrescentar : "Error message" assim:

assert d != null : "d is null";

para especificar qual deve ser a mensagem de erro do AssertionError lançado.

Esta postagem foi reescrita como um artigo here .


assert é uma ferramenta de depuração que fará com que o programa lance uma exceção AssertionFailed se a condição não for verdadeira. Nesse caso, o programa lançará uma exceção se qualquer uma das duas condições após ela for avaliada como falsa. De modo geral, assert não deve ser usado no código de produção







assertion