É 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:
Bloco de código |
---|
|
@TestFixture()
@Skip()
user function test_function_skip()
... |
@Skip() para classe:
Bloco de código |
---|
|
@TestFixture()
@Skip()
class test_class_skip()
... |
@Skip() para método:
Bloco de código |
---|
|
...
@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:
Bloco de código |
---|
|
#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()
Bloco de código |
---|
|
@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
Bloco de código |
---|
|
// 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()
Bloco de código |
---|
|
@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
Bloco de código |
---|
|
// 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()
Bloco de código |
---|
|
@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
Bloco de código |
---|
|
// 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()
Bloco de código |
---|
|
@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
Bloco de código |
---|
|
// 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:
Bloco de código |
---|
|
@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".