Árvore de páginas

É possível "pular" alguns testes escritos para o PROBAT, esse recurso embora deva ser evitado ao máximo pois um teste deve ser executado sempre e sua finalidade é forçar as correções.

Porém, algumas correções ou pendências podem demorar muito para ocorrer por muitas causas e nesse caso não faz sentido termos o plano de testes quebrando por uma pendência na qual não tenhamos gerência para mudar, por exemplo.

Outro exemplo é realizar o "pulo" para determinadas versões do appserver, tlppCore ou SO específico. Esse recurso veremos ao final dessa mesma página.

Portanto o PROBAT embora "pule" a execução do testes, o salto será registrado, e mesmo não quebrando os resultados irá exportar a informação do teste como "skipped".

Bom, vamos ver como podemos marcar um teste como "skip".

Para exemplos completos, veja em (Exemplo no GitHub) em: github.com/totvs/tlpp-probat-samples


Pulando Funções, Classes e Métodos - @Skip()

Esse recurso causa o "pulo" da função, classe interia ou somente o método de testes, independentemente de quantas funções de asserts existem implementados em seu escopo.

Portanto, mesmo que hajam muitos asserts implementados, quando houver @skip() o PROBAT irá registrar somente 1 (um) salto no resultado de testes, pois ele irá fazer referência à função ou ao método e não ao seu conteúdo.

Exemplos:

@Skip() para função:
@TestFixture()
@Skip()
user function test_function_skip()
 ...
@Skip() para classe:
@TestFixture()
@Skip()
class test_class_skip()
...
@Skip() para método:
...
@Test()
@Skip()
public method test_method_skip()
...

Pulando asserts específicos - SKIPASSERT e SKIPTEST

Ao contrário da opção acima, talvez seja necessário somente "pular" um assert em específico e não o teste inteiro.

Para isso existe um comando que é inserido em seu fonte logo antes da execução do assert.

O "pulo" ficará condicionado a somente ao próximo assert que for executado, sendo assim, o assert posterior será executado normalmente.

Igualmente ao @Skip(), o PROBAT irá registar o salto no resultado dos testes sem gerar resultado negativo, porém agora ele fará referência ao assert "pulado".

Exemplo:

Usaremos no exemplo uma função, mas o procedimento pode ser usado em método também pois esse recurso é por assert.


Usando função:
#include "tlpp-core.th"
#include "tlpp-probat.th"

using namespace   tlpp.probat

@TestFixture()
user function test_sample_skip_assert()

  local cVar := ""  as character
  local nVar := 0   as numeric
  local fVar        as decimal

  assertEquals( valtype(cVar), "C" )

  SKIPTEST
  assertEquals( valtype(fVar), "F" )
  // OU
  SKIPASSERT
  assertEquals( valtype(fVar), "F" )

  assertEquals( valtype(nVar), "N" )

return .T.

Utilizando filtros para o Skip

O recurso de salto possui a possibilidade de informar algumas circunstâncias que o teste deve ser "pulado", seguem:

  • Sistema Operacional;
  • Versão tlppCore;
  • Versão appserver;
  • Nome appserver.

O recurso funciona tanto para a annotation [Skip] como para os comandos [SKIPTEST] e [SKIPASSERT].

Vejamos os exemplos:


Sistema Operacional:

@Skip()
@Skip( system="windows" ) // Somente pula o teste em Sistema Operacional WINDOWS

// ou

@Skip( system="linux" ) // Somente pula o teste em Sistema Operacional LINUX
Comando Skip do assert
// Somente pula o assert em Sistema Operacional WINDOWS
  SKIPASSERT SYSTEM "windows"
  // ou
  SKIPTEST SYSTEM "windows"

// Somente pula o assert em Sistema Operacional LINUX
  SKIPASSERT SYSTEM "linux"
  // ou
  SKIPTEST SYSTEM "linux"



Versão tlppCore:

@Skip()
@Skip( tlppVersion="01.02.10" ) // Somente a versão 01.02.10

// ou

@Skip( tlppVersion="< 01.02.12" ) // Todas as versões abaixo de 01.02.12

// ou

@Skip( tlppVersion=">= 01.02.12" ) // Todas as versões acima e igual de 01.02.12
Comando Skip do assert
// Somente a versão 01.02.10
  SKIPASSERT TLPPVERSION "01.02.10"
  // ou
  SKIPTEST TLPPVERSION "01.02.10"

// Todas as versões abaixo de 01.02.12
  SKIPASSERT TLPPVERSION "< 01.02.12"
  // ou
  SKIPTEST TLPPVERSION "< 01.02.12"

// Todas as versões acima e igual de 01.02.12
  SKIPASSERT TLPPVERSION ">= 01.02.12"
  // ou
  SKIPTEST TLPPVERSION ">= 01.02.12"

Versão appserver:

@Skip()
@Skip( appServerVersion="19.3.1.5" ) // Somente a versão 19.3.1.5

// ou

@Skip( appServerVersion="< 19.3.1.7" ) // Todas as versões abaixo de 19.3.1.7

// ou

@Skip( appServerVersion=">= 19.3.1.7" ) // Todas as versões acima e igual de 19.3.1.7
Comando Skip do assert
// Somente a versão 19.3.1.5
  SKIPASSERT APPSERVERVERSION "19.3.1.5"
  // ou
  SKIPTEST APPSERVERVERSION "19.3.1.5"

// Todas as versões abaixo de 19.3.1.7
  SKIPASSERT APPSERVERVERSION "< 19.3.1.7"
  // ou
  SKIPTEST APPSERVERVERSION "< 19.3.1.7"

// Todas as versões acima e igual de 19.3.1.7
  SKIPASSERT APPSERVERVERSION ">= 19.3.1.7"
  // ou
  SKIPTEST APPSERVERVERSION ">= 19.3.1.7"

Nome appserver:

@Skip()
@Skip( appServerName="LOBO-GUARA" ) // Somente pula o teste em appserver LOBO-GUARA

// ou

@Skip( appServerName="HARPIA" ) // Somente pula o teste em appserver HARPIA
Comando Skip do assert
// Somente pula o teste em appserver LOBO-GUARA
  SKIPASSERT APPSERVERNAME "LOBO-GUARA"
  // ou
  SKIPTEST APPSERVERNAME "LOBO-GUARA"

// Somente pula o teste em appserver HARPIA
  SKIPASSERT APPSERVERNAME "HARPIA"
  // ou
  SKIPTEST APPSERVERNAME "HARPIA"

IMPORTANTE

É possível juntar mais de uma opção no mesmo SKIP.

Exemplos:

@Skip( system="linux", appServerName="HARPIA" )

// ou

SKIPASSERT SYSTEM "linux" APPSERVERNAME "HARPIA"

// ou

SKIPTEST   SYSTEM "linux" APPSERVERNAME "HARPIA"


  • Pode juntar as 4 (quatro) opções de filtro.

  • Toda vez que tiver mais de uma opção o operador utilizado é o "AND", ou seja, todas as opções precisam ser válidas para entrar no filtro, caso contrário o teste não será "pulado".