Histórico da Página
É 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 |
Usando classe:
...
() 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".