eduveraneio / awesome-unit-tests

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

Dubbo: testJCacheGetExpired() #20

Open eduveraneio opened 3 years ago

eduveraneio commented 3 years ago

Contexto:

A classe JCacheFactoryTest.java é responsável por JCacheFactory.java. Nesta classe, temos o método testJCacheGetExpired() que testa se um cache está expirado. O teste desse método é o seguinte:

Código: JCacheFactoryTest.java

@Test
  public void testJCacheGetExpired() throws Exception {
    URL url = URL.valueOf("test://test:12/test?cache=jacache&cache.write.expire=1");
    AbstractCacheFactory cacheFactory = getCacheFactory();
    Invocation invocation = new RpcInvocation();
    Cache cache = cacheFactory.getCache(url, invocation);
    cache.put("testKey", "testValue");
    Thread.sleep(10);
    assertNull(cache.get("testKey"));
  }

Explicação:

Observe que, a variável url do tipo URL é inicializada com o endereço test://test:12/test?cache=jacache&cache.write.expire=1. Note também que o parâmetro cache.write.expire=1 significa que o cache da página deve expirar em 1 milissegundos. Então, é atribuída à variável cacheFactory, do tipo AbstractCacheFactory, o valor da função getCacheFactory(). Posteriormente, uma instância de RpcInvocation() é armazenada na variável invocation, usada para capturar o cache da url através da função getCache(), que é atribuída ao objeto cache. Neste, adiciona-se os elementos testKey e testValue, ou seja, uma chave e um valor. Em seguida, uma thread é lançada de modo que a página deve aguardar 10 milissegundos, expirando, assim, o cache da mesma. Finalmente, o método testa se o cache de chave testKey é null através da função assertNull(), o que é verdade.

andrehora commented 3 years ago

10 milissegundos, não?

mtov commented 3 years ago

E talvez itemizar um pouco mais a explicação (digo, usar alguns bullets (*) para explicar), pois pode facilitar a leitura....

Além disso: é um teste flaky? Se for, faz sentido considerar ele "awesome"?

eduveraneio commented 3 years ago

10 milissegundos, não?

Realmente, verifiquei na documentação do método que o valor é em milissegundos. Obrigado!