eduveraneio / awesome-unit-tests

Repositório piloto com exemplos práticos de Testes de Unidade.
5 stars 0 forks source link

RxJava: isBug() #10

Open eduveraneio opened 4 years ago

eduveraneio commented 4 years ago

Contexto:

A classe RxJavaPluginsTest.java é responsável por RxJavaPlugins.java. Nesta classe temos o método isBug() que testa se um plugin adicionado a biblioteca RxJava possui algum erro. O teste desse método é o seguinte:

Código: RxJavaPluginsTest.java

@Test
  public void isBug() {
    assertFalse(RxJavaPlugins.isBug(new RuntimeException()));
    assertFalse(RxJavaPlugins.isBug(new IOException()));
    assertFalse(RxJavaPlugins.isBug(new InterruptedException()));
    assertFalse(RxJavaPlugins.isBug(new InterruptedIOException()));

    assertTrue(RxJavaPlugins.isBug(new NullPointerException()));
    assertTrue(RxJavaPlugins.isBug(new IllegalArgumentException()));
    assertTrue(RxJavaPlugins.isBug(new IllegalStateException()));
    assertTrue(RxJavaPlugins.isBug(new MissingBackpressureException()));
    assertTrue(RxJavaPlugins.isBug(new ProtocolViolationException("")));
    assertTrue(RxJavaPlugins.isBug(new UndeliverableException(new TestException())));
    assertTrue(RxJavaPlugins.isBug(new CompositeException(new TestException())));
    assertTrue(RxJavaPlugins.isBug(new OnErrorNotImplementedException(new TestException())));
  }

Explicação:

Observe que, ao injetar um plugin para alguma operação padrão do RxJava o método realiza vários testes em busca de algum erro. No primeiro bloco, quatro testes são executados e validados através da função assertFalse(): RuntimeException, IOException, InterruptedException e InterruptedIOException. Nesta situação, espera-se que todos os valores sejam falsos, caso contrário, o teste não passará. No segundo bloco, mais oito testes são feitos instanciando objetos do tipo NullPointerException, IllegalArgumentException, IllegalStateException, MissingBackpressureException, ProtocolViolationException, UndeliverableException, CompositeException e OnErrorNotImplementedException. Aqui, utiliza-se a função assertTrue() para verificar se valores são verdadeiros, ou seja, que nenhum erro foi identificado.