É 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)
Pulando Funções e Métodos inteiros - @Skip()
Esse recurso causa o "pulo" da função ou método inteiro, 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:
Usando função:
@TestFixture() @Skip() user function test_sample_skip()
Usando classe:
@TestFixture() @Skip() public method test_sample_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 é inserído 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
@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
@Skip( tlppVersion="< 01.02.12" ) // Todas as versões abaixo de 01.02.12
@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
@Skip( appServerVersion="< 19.3.1.7" ) // Todas as versões abaixo de 19.3.1.7
@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 TLPPVERSION "19.3.1.5" // ou SKIPTEST TLPPVERSION "19.3.1.5"
// Todas as versões abaixo de 19.3.1.7 SKIPASSERT TLPPVERSION "< 19.3.1.7" // ou SKIPTEST TLPPVERSION "< 19.3.1.7"
// Todas as versões acima e igual de 19.3.1.7 SKIPASSERT TLPPVERSION ">= 19.3.1.7" // ou SKIPTEST TLPPVERSION ">= 19.3.1.7"
Nome appserver:
@Skip()
@Skip( appServerName="LOBO-GUARA" ) // Somente pula o teste em appserver LOBO-GUARA
@Skip( appServerName="HARPIA" ) // Somente pula o teste em appserver HARPIA
Comando Skip do assert
// Somente pula o teste em appserver LOBO-GUARA SKIPASSERT APPSERVERNAME "HARPIA" // ou SKIPTEST APPSERVERNAME "HARPIA"
// 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" )
SKIPASSERT SYSTEM "linux" APPSERVERNAME "HARPIA"
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".