Escolar Documentos
Profissional Documentos
Cultura Documentos
Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
TOTVSTEC
PROBAT
Table of Contents
1 Motor de Testes tlppCore .................................................................................10
2 Notas:.................................................................................................................11
3 1 - A História ......................................................................................................12
4 2 - Obtendo o PROBAT ......................................................................................13
4.1 1 - Download .......................................................................................................................... 13
4.2 2 - Include ............................................................................................................................... 13
4.3 3 - Patch .................................................................................................................................. 14
4.4 a - Verificando a instalação.................................................................................................... 14
5 3 - Configurando................................................................................................16
5.1 a - Arquitetura de diretórios do projeto................................................................................ 16
5.1.1 Fontes Oficiais Projeto >> /src/ ........................................................................................................................... 16
5.1.2 Testes >> /test/..................................................................................................................................................... 17
5.1.2.1 Módulos / Funcionalidades ................................................................................................................................. 17
5.2 b - Encontrando fontes oficiais ............................................................................................. 18
5.2.1 Hierarquia de diretórios ...................................................................................................................................... 18
5.2.2 Annotation............................................................................................................................................................ 18
5.2.3 Tabela SQLite ....................................................................................................................................................... 19
5.3 c - INI ....................................................................................................................................... 19
5.3.1 Exemplo: appserver.ini ........................................................................................................................................ 19
5.3.2 Descrição das chaves ........................................................................................................................................... 20
5.3.2.1 GENERAL............................................................................................................................................................... 20
5.3.2.2 SOURCE ................................................................................................................................................................ 20
5.3.2.3 TESTS.................................................................................................................................................................... 21
5.3.2.4 CODE COVERAGE .................................................................................................................................................. 21
5.3.2.5 EXPORT ................................................................................................................................................................. 22
5.3.2.6 VALIDATION .......................................................................................................................................................... 23
– 2
TOTVSTEC – PROBAT
– 3
TOTVSTEC – PROBAT
7.4.5.2 Parâmetros........................................................................................................................................................... 37
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
– 4
TOTVSTEC – PROBAT
7.4.10.2 Parâmetros........................................................................................................................................................... 44
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
– 5
TOTVSTEC – PROBAT
7.4.15.2 Parâmetros........................................................................................................................................................... 52
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
– 6
TOTVSTEC – PROBAT
– 7
TOTVSTEC – PROBAT
– 8
TOTVSTEC – PROBAT
– 9
TOTVSTEC – PROBAT
O **PROBAT** é uma ferramenta do tlppCore para a execução de testes e apuração de resultados no processo de
desenvolvimento ágil, TDD (Test-driven development) e QA (Quality Assurance) de seu projeto.
O nome PROBAT vem do Latim e significa prova / testes, portanto, nenhum nome melhor representaria a
ferramenta de testes.
Suas principais características são:
• Facilidade de uso;
• Facilidade no desenvolvimento de testes;
• Flexibilidade na configuração;
• Armazena históricos dos testes em SQLite;
• Validação de cobertura de código;
• Exportação de resultados em formatos para uso em ferramentas de mercado.
2 Notas:
• Não possui recursos para testes de interface.
• Funciona somente a partir do binário (Build 7.00.170117A) Lobo-Guará.
Notas: – 11
TOTVSTEC – PROBAT
TOTVSTEC – PROBAT
3 1 - A História
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Inicialmente ele foi concebido para atender os testes unitários do desenvolvimento dos componentes da
linguagem TL++, portanto ele era somente uma iniciativa tímida para atender uma necessidade específica.
A decisão de criar algo novo deu-se pelo fato de que as funcionalidades do TL++ devem funcionar corretamente
sem que haja dependências de nenhum outro produto.
Umas das premissas para essa iniciativa era utilizar em grande escala os recursos nativos da linguagem, não
somente em testes específicos como também na construção do motor de testes, pois ele é todo construído em TL+
+, são eles:
• Namespaces1
• Nomes longos2
• Reflection e Annotation3
• Tipagem de dados4
• RegEx5
• REST6
Com a concepção do tlppCore, RPO que é expedido juntamente com o appserver da TOTVS, contendo recursos
novos da linguagem e produtos nativos à tecnologia TOTVS, houve a necessidade de ampliar a abrangência do
Motor de Testes.
Logo vimos que o Motor precisava mais do que atender testes unitários, necessitava também de Testes Integrados,
Testes Sistêmicos, Testes Funcionais e Testes de Versões.
Além disso nosso cenário de ambiente de testes cresceu consideravelmente, tal como testar ambiente de
desenvolvimento, ambiente Master e o ambiente final chamado Stable, isso tudo para Windows, Linux utilizando
appserver Lobo-Guará e Harpia.
Resumidamente o motor deixou de ser um Motor de Testes Unitários para um MOTOR DE TESTES.
Com isso, a ferramenta que nasceu para ser um apoio ao nosso trabalho, se tornou um módulo extremamente
funcional e robusto, e acreditamos que pode ser útil para nossos clientes e parceiros assim como é para nós!
Seja bem vindo!
1 https://tdn.totvs.com/display/tec/Namespace
2 https://tdn.totvs.com/display/tec/Nomes+longos
3 https://tdn.totvs.com/display/tec/Reflection+e+Annotation
4 https://tdn.totvs.com/pages/viewpage.action?pageId=579304379
5 https://tdn.totvs.com/display/tec/RegEx
6 https://tdn.totvs.com/display/tec/REST
1 - A História – 12
TOTVSTEC – PROBAT
4 2 - Obtendo o PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Para utilizar o PROBAT, será necessário primeiro obter e instalar a ferramenta em seu ambiente.
Recomendamos fortemente que não seja instalado em seu ambiente de produção, sendo indicado separar um
ambiente para testes.
4.1 1 - Download
Primeiro será necessário fazer download dos pacotes do produto para aplicar em seu ambiente.
Para isso, utilize a página de DOWNLOAD do tlppCore e busque os pacotes do PROBAT (Test Engine).
https://tdn.totvs.com/display/tec/Downloads
Você precisará de 2 (dois) arquivos, sendo:
• tlpp-probat.th
• probat_{versao_appserver}.ptm
4.2 2 - Include
Ao obter o arquivo tlpp-probat.th, copie-o para a mesma pasta de includes que você utilize em seu ambiente.
Caso queira utilizar uma pasta diferentes dos includes do Protheus, não pode esquecer de informar essa nova pasta
em seu VsCode.
Todos os seus fontes de testes deverão importar a include do PROBAT, como o exemplo abaixo:
#include "tlpp-probat.th"
7 https://tdn.totvs.com/pages/viewpage.action?pageId=555860439
2 - Obtendo o PROBAT – 13
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
4.3 3 - Patch
Haverá dois patchs para download, portanto no passo anterior obtenha o patch conforme a versão de seu
appserver, ou seja, Lobo-Guará ou Harpia.
• probat_LoboGuara.ptm
ou
• probat_Harpia.ptm
A aplicação do patch é simples e segue igualmente o processo de todo patch e podem ser realizado de duas
maneiras:
• VsCode
Siga as instruções conforme documentação da extensão oficial da TOTVS:
tds-vscode - Aplicando de pacotes de atualização (_patch)8
• Linha de comando
O appserver possui o recurso de se aplicar patch através de linha de comando, como o exemplo abaixo:
function sampleIsProbat()
local jModule
if ( tlpp.module( 'PROBAT', @jModule ) )
conout( 'Ferramenta: ' + jModule['module'] )
conout( 'Instalado?: ' + if( jModule['linked'], 'sim', 'não' ) )
conout( 'Versão....: ' + jModule['version'] )
8 https://github.com/totvs/tds-vscode/blob/HEAD/docs/apply-patch.md
9 https://tdn.totvs.com/pages/viewpage.action?pageId=528461210
2 - Obtendo o PROBAT – 14
TOTVSTEC – PROBAT
else
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
10 https://tdn.totvs.com/pages/viewpage.action?pageId=653411918
2 - Obtendo o PROBAT – 15
TOTVSTEC – PROBAT
5 3 - Configurando
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
O PROBAT utiliza principalmente o INI do appserver para chavear configurações de suas funcionalidades através de
uma sessão própria, tal como abaixo:
[PROBAT]
Porém, alguns pontos também podem ser configurados através de comandos que devem ser compilados em seu
projeto, saiba mais em:
• Cobertura de Código(see page 71)
• Suites(see page 69)
• Cross Validation(see page 79)
Continue aprendendo a configurar seu ambiente em:
C:\my_project
Agora que temos nosso diretório principal do projeto, vamos começar a criar a estrutura na qual iremos trabalhar.
Vamos agora a criação de mais 2 (dois) diretórios, importante citar que serão subdiretórios a partir do principal do
projeto, e eles serão base para distinguir dois tipos de fontes, são eles:
3 - Configurando – 16
TOTVSTEC – PROBAT
Ficando então:
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
C:\my_project\src\
C:\my_project\test\
C:\my_project\src\date
C:\my_project\test\date
3 - Configurando – 17
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
[PROBAT]
SOURCE_DISCOVERY_MODE=0
SOURCE_PATH=C:/my_project/src/
Sendo:
• {SOURCE_DISCOVERY_MODE=0} Informa que o PROBAT fará as buscas dos arquivos por hierarquia de
diretórios.
• {SOURCE_PATH=C:/my_project/src/} Diretório raiz onde possui todos os arquivos-fontes oficiais e
subdiretórios do projeto.
5.2.2 Annotation
Caso você tenha os fontes distribuídos de forma organizada diferente da descrita em [Hierarquia de diretórios] e o
processo de refatorar a localização dos arquivos seja muito custoso, então o PROBAT possui um modo de
encontrá-los através do uso de annotation.
Primeiro é preciso configurar o funcionamento para esse modo, sendo assim, informe conforme abaixo em sua INI:
[PROBAT]
SOURCE_DISCOVERY_MODE=1
Depois, em cada fonte oficial e em qualquer função ou classe presentes no fonte utilizar a annotation
[DiscoverySrc].
Exemplo:
3 - Configurando – 18
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
@DiscoverySrc(folder="/my_project/src/date")
user function myDate()
...
Através da propriedade [folder] você irá informar qual o diretório na qual esse fonte está localizado.
Portanto através da reflection o PROBAT irá buscar todos os fontes que utilizam [DiscoverySrc] e assumirá como
fontes oficiais do seu projeto.
Importante ressaltar que esse modo possui algumas limitações, vejamos:
• Só funcionará com fontes .tlpp, pois Annotation e Reflection é um recurso exclusivo do TL++.
• Logo, fontes em ADVPL não serão encontrados por esse modo;
• É preciso refatorar todos os seus fontes oficiais para a inserção do @DiscoverySrc().
• Seu projeto precisa ser recompilado para que o recurso funcione.
5.3 c - INI
3 - Configurando – 19
TOTVSTEC – PROBAT
CODECOVERAGE_PERCENT=80
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
CODECOVERAGE_EXPORT_TFS=1
CODECOVERAGE_FILTER_SRC=subfolder_2,subfolder_4
EXPORT_FILE_NAME=test_results
EXPORT_AFTER_RUN=1
EXPORT_FORMAT=JUnit
ISFREAK=palavra_bloqueada_1,palavra_bloqueada_2
ShutDown=0
5.3.2.1 GENERAL
Configurações genéricas.
DEVTLPP=0
ATENÇÃO
Essa chave deve sempre estar com o valor 0 (zero), pois 1 (um) é de uso exclusivo da equipe de desenvolvimento do
tlppCore e ativar essas particularidades pode causar comportamentos inesperados em seu projeto.
ShutDown=0
Determina se ao final da execução dos testes o appserver será finalizado automaticamente ou permanece no ar.
0 = Mantém no ar o appserver.
1 = Finaliza appserver
5.3.2.2 SOURCE
Configurações referentes aos arquivos fontes oficiais do projeto.
SOURCE_DISCOVERY_MODE=0
Informa o modo de encontrar os arquivos fontes oficiais de seu projeto.
• 0 = Hierarquia de diretórios
• 1 = Annotation.
Veja a documentação completa sobre esse recurso em:
Encontrando fontes oficiais(see page 18)
3 - Configurando – 20
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
SOURCE_PATH=d:\tlppCore\src
Indica qual o diretório onde se encontram os arquivos fontes oficiais quando informado 0 (zero) em
[SOURCE_DISCOVERY_MODE].
Veja a documentação completa sobre esse recurso em:
Encontrando fontes oficiais(see page 18)
SOURCE_SKIPPED_PATH=subfolder_1,subfolder_3
Indica qual subdiretórios serão ignorados na busca pelos fontes oficiais para registrar no SQLite quando informado
0 (zero) em [SOURCE_DISCOVERY_MODE].
Caso nada seja informado, nenhum subdiretório seja ignorado, e caso precise de mais de um subdiretório separe
por vírgula ",".
5.3.2.3 TESTS
Configurações referentes aos fontes de Testes do projeto.
TESTS_DISCOVERY_MODE=0
Informa o modo de descoberta dos fontes de testes, sendo:
• 0 - Por Solicitação
• 1 - Na Execução
Para saber mais sobre esse recurso, visite:
Discovery - Encontrando os Testes no RPO(see page 82)
TESTS_DISCOVERY_TIME_INTERVAL=3600
Indica o intervalo em segundos que o PROBAT faz buscas novamente dos fontes de testes compilados no RPO.
Para saber mais sobre esse recurso, visite:
Discovery - Encontrando os Testes no RPO(see page 82)
CODECOVERAGE=1
Indica que deseja ligar/desligar a cobertura de código na execução dos testes.
3 - Configurando – 21
TOTVSTEC – PROBAT
• 0 = Desligado
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
• 1 = Ligado
Saiba mais em:
Cobertura de Código(see page 71)
CODECOVERAGE_PERCENT=80
Indica o percentual mínimo de cobertura aceito sobre os fontes oficiais.
Saiba mais em:
Cobertura de Código(see page 71)
CODECOVERAGE_EXPORT_JSON=1
Indica que deseja exportar em formato JSON os resultados de cobertura de código.
Saiba mais em:
Cobertura de Código(see page 71)
CODECOVERAGE_EXPORT_TFS=1
Indica que deseja exportar em formato COBERTURA (XML) os resultados de cobertura de código.
Saiba mais em:
Cobertura de Código(see page 71)
CODECOVERAGE_FILTER_SRC=subfolder_2,subfolder_4
Indica quais subdiretórios do seu projeto serão considerados na validação no processo de cobertura de código.
Saiba mais em:
Cobertura de Código(see page 71)
5.3.2.5 EXPORT
Configurações referentes à exportação dos resultados dos testes.
EXPORT_FILE_NAME=test_results
Informa o nome do arquivo de exportação dos resultados.
Saiba mais em:
Exportando Resultados(see page 88)
3 - Configurando – 22
TOTVSTEC – PROBAT
EXPORT_AFTER_RUN=1
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Indica se deseja que gere os resultados logo após a execução dos testes.
0 = Não gera arquivo.
1 = Gera arquivo com resultado, baseado em EXPORT_FILE_NAME e EXPORT_FORMAT.
Saiba mais em:
Exportando Resultados(see page 88)
EXPORT_FORMAT=JUnit
Formato do arquivo com resultado dos testes.
Saiba mais em:
Exportando Resultados(see page 88)
5.3.2.6 VALIDATION
Configurações referentes à validações adicionais.
CROSS_VALIDATION=u_minha_funcao_cross
Ativa o Cross Validation informando a função de usuário que retornará a lista de "alvos".
Veja mais detalhes sobre esse recurso em: e-8 - Cross Validation(see page 79)
Ao não informar nenhuma função para essa chave, essa validação é desativada.
ISFREAK=palavra_bloqueada_1,palavra_bloqueada_2
Determina uma lista de palavras que serão bloqueadas no uso das descrições dos testes, assim poder-se-á impedir
o uso de palavras inadequadas.
As palavras devem ser separada por vírgula "," quando houver mais de 1 (uma) palavra.
Ao não informar nenhuma palavra para essa chave, essa validação é desativada.
3 - Configurando – 23
TOTVSTEC – PROBAT
6 4 - Primeiros Passos
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
#include "tlpp-probat.th"
@TestFixture()
user function sampeTestBasic()
local nVar := 0
local cValue := valtype( nVar )
return .T.
tlpp.probat.run()
11 http://tlpp-probat.th
4 - Primeiros Passos – 24
TOTVSTEC – PROBAT
Essa função é do tipo Main Function, portanto pode ser chamada diretamente na execução pelo VsCode ou por
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
4 - Primeiros Passos – 25
TOTVSTEC – PROBAT
7 5 - Construindo Testes
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Concentraremos nesse grupo todos as funcionalidades disponíveis para a construção de testes, portanto
aconselhamos ler todas as páginas.
Todos os exemplos usados nessa documentação terão como foco testar as funções já conhecidas aos
desenvolvedores ADVPL e TL++, são elas:
valType() https://tdn.totvs.com/display/tec/ValType
strTokArr2() https://tdn.totvs.com/display/tec/StrTokArr2
max() https://tdn.totvs.com/display/tec/Max
int() https://tdn.totvs.com/display/tec/Int
#include "tlpp-core.th"
#include "tlpp-probat.th"
@TestFixture()
user function test_Max()
nInt_1 := 10
nInt_2 := 20
nInt_max := max( nInt_1, nInt_2 )
// Result , Expected
assertEquals( nInt_max, 20 )
12 https://tdn.totvs.com/pages/viewpage.action?pageId=6063065
13 https://tdn.totvs.com/display/tec/Reflection+e+Annotation
5 - Construindo Testes – 26
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
#include "tlpp-core.th"
#include "tlpp-probat.th"
@TestFixture()
class test_max_class
endclass
// Result , Expected
assertEquals( ::nInt_max, 20 )
5 - Construindo Testes – 27
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
# include "tlpp-core.th"
# include "tlpp-probat.th"
@TestFixture()
class test_max_class_completo
// Setups
@OneTimeSetUp()
public method SetOne_1()
@OneTimeSetUp()
public method SetOne_2()
@Setup()
public method SetAll()
// Tests
@Test('first example test for full use of resources')
public method FirstExampleMethod()
5 - Construindo Testes – 28
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
//TearDown's
@TearDown()
public method DownAll()
@OneTimeTearDown()
public method DownOne()
endclass
5 - Construindo Testes – 29
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.3.1 Importante
Os métodos SETONE e DOWNONE somente são executados uma única vez, ou seja, no início de todos os testes
executa o SETONE e ao final de todos os testes executa o DOWNONE.
Porém, como temos mais de 1 (um) método de teste, os métodos SETALL e DOWNALL são executados mais de uma
vez, sempre antes de cada método de teste executa o SETALL e após cada método de teste executa o DOWNALL.
O fluxo de execução da classe fica então:
1. Inicia Objeto TestFixture (método new)
2. Executa método OneTimeSetup [Opcional]
3. Executa método Setup [Opcional]
4. Executa método Test
5. Executa método TearDown [Opcional]
6. Executa método OneTimeTearDown [Opcional]
NOTA 1: não há limites para quantidade de métodos a serem executados através das marcações por annotation, ou
seja, todos os métodos marcados serão executados.
NOTA 2: Os passos 3-4-5, caso tenham sido declarados pelas annotations correspondentes e exista mais de um
teste, sempre haverá esse Loop de execução dos 3 passos, ou seja, >> setup >> test >> tearDown.
7.4 d - Asserts
Ao utilizar o PROBAT como motor de testes, é preciso fazer uso de algumas funções para que os resultados sejam
registrados corretamente.
Essas funções são chamadas de asserts, e cada uma tem uma função específica.
Abaixo segue a relação de funções de asserts disponíveis:
5 - Construindo Testes – 30
TOTVSTEC – PROBAT
7.4.1 assertEquals
Verifica se o resultado do teste é IGUAL ao de um valor esperado.
7.4.1.1 Sintaxe
7.4.1.2 Parâmetros
5 - Construindo Testes – 31
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.1.3 Retorno
7.4.1.4 Observações
• Caso o assertEquals() for chamado sem que tenha o PROBAT em execução, os valores gerados serão
somente exibidos no console.log da aplicação.
7.4.1.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertEquals()
local n1 := 10 as numeric
local n2 := 10 as numeric
local n3 := 11 as numeric
assertEquals( n1, n2 ) // Ok
assertEquals( n1, n3 ) // Erro
return .T.
7.4.1.6 Abrangência
01.02.10
7.4.2 assertNotEquals
Verifica se o resultado do teste é DIFERENTE ao de um valor informado.
7.4.2.1 Sintaxe
5 - Construindo Testes – 32
TOTVSTEC – PROBAT
ou
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.2.2 Parâmetros
7.4.2.3 Retorno
7.4.2.4 Observações
• Caso o assertNotEquals() for chamado sem que tenha o PROBAT em execução, os valores gerados serão
somente exibidos no console.log da aplicação.
7.4.2.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertNotEquals()
local n1 := 10 as numeric
local n2 := 10 as numeric
local n3 := 11 as numeric
5 - Construindo Testes – 33
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
return .T.
7.4.2.6 Abrangência
01.02.10
7.4.3 assertOK
Causa um resultado OK de forma deliberada.
7.4.3.1 Sintaxe
7.4.3.2 Parâmetros
7.4.3.3 Retorno
5 - Construindo Testes – 34
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.3.4 Observações
• Caso o assertOK() for chamado sem que tenha o PROBAT em execução, os valores gerados serão somente
exibidos no console.log da aplicação.
7.4.3.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertOK()
local n1 := 1 as numeric
if ( valtype( n1 ) == 'N' )
assertOK( "valid type for variable n1" )
endif
return .T.
7.4.3.6 Abrangência
01.02.10
7.4.4 assertError
Causa um resultado de ERRO de forma deliberada.
7.4.4.1 Sintaxe
5 - Construindo Testes – 35
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.4.2 Parâmetros
7.4.4.3 Retorno
7.4.4.4 Observações
• Caso o assertError() for chamado sem que tenha o PROBAT em execução, os valores gerados serão somente
exibidos no console.log da aplicação.
7.4.4.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertError()
local n1 := 1 as numeric
return .T.
5 - Construindo Testes – 36
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.4.6 Abrangência
01.02.10
7.4.5 assertWarning
Gera log de warning na tabela PROBAT_TEST_WARNING.
7.4.5.1 Sintaxe
7.4.5.2 Parâmetros
7.4.5.3 Retorno
7.4.5.4 Observações
• Embora essa função seja um assert, ela não gera resultado positivo ou negativo de teste. Irá apenas gerar
uma mensagem de AVISO que no momento de exportação dos resultados será gerado um arquivo XML com
todas as mensagens, caso existam.
• Caso o assertWarning() for chamado sem que tenha o PROBAT em execução, os valores gerados serão
somente exibidos no console.log da aplicação.
5 - Construindo Testes – 37
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.5.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
user function sample_assertWarning()
return .T.
7.4.5.6 Abrangência
01.02.12
7.4.6 assertTrue
Verifica se o resultado do teste é Verdadeiro (.T.).
7.4.6.1 Sintaxe
7.4.6.2 Parâmetros
5 - Construindo Testes – 38
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.6.3 Retorno
7.4.6.4 Observações
• Caso o assertTrue() for chamado sem que tenha o PROBAT em execução, os valores gerados serão somente
exibidos no console.log da aplicação.
7.4.6.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertTrue()
assertTrue( l1 ) // Erro
assertTrue( l2 ) // Ok
return .T.
7.4.6.6 Abrangência
01.02.10
7.4.7 assertFalse
Verifica se o resultado do teste é Falso (.F.).
7.4.7.1 Sintaxe
5 - Construindo Testes – 39
TOTVSTEC – PROBAT
ou
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.7.2 Parâmetros
7.4.7.3 Retorno
7.4.7.4 Observações
• Caso o assertFalse() for chamado sem que tenha o PROBAT em execução, os valores gerados serão somente
exibidos no console.log da aplicação.
7.4.7.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertFalse()
assertFalse( l1 ) // Ok
assertFalse( l2 ) // Erro
5 - Construindo Testes – 40
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
return .T.
7.4.7.6 Abrangência
01.02.10
7.4.8 assertGreater
Verifica se o resultado do teste é MAIOR ao de um valor esperado.
7.4.8.1 Sintaxe
7.4.8.2 Parâmetros
7.4.8.3 Retorno
5 - Construindo Testes – 41
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.8.4 Observações
• Caso o assertGreater() for chamado sem que tenha o PROBAT em execução, os valores gerados serão
somente exibidos no console.log da aplicação.
7.4.8.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertGreater()
local n1 := 10 as numeric
local n2 := 11 as numeric
return .T.
7.4.8.6 Abrangência
01.02.10
7.4.9 assertGreaterOrEqual
Verifica se o resultado do teste é MAIOR OU IGUAL ao de um valor esperado.
7.4.9.1 Sintaxe
5 - Construindo Testes – 42
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.9.2 Parâmetros
7.4.9.3 Retorno
7.4.9.4 Observações
• Caso o assertGreaterOrEqual() for chamado sem que tenha o PROBAT em execução, os valores gerados
serão somente exibidos no console.log da aplicação.
7.4.9.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertGreaterOrEqual()
local n1 := 10 as numeric
local n2 := 10 as numeric
local n3 := 11 as numeric
assertGreaterOrEqual( n1, n2 ) // Ok
assertGreaterOrEqual( n1, n3 ) // Erro
assertGreaterOrEqual( n3, n1 ) // Ok
return .T.
5 - Construindo Testes – 43
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.9.6 Abrangência
01.02.10
7.4.10 assertLess
Verifica se o resultado do teste é MENOR ao de um valor esperado.
7.4.10.1 Sintaxe
7.4.10.2 Parâmetros
7.4.10.3 Retorno
7.4.10.4 Observações
• Caso o assertLess() for chamado sem que tenha o PROBAT em execução, os valores gerados serão somente
exibidos no console.log da aplicação.
5 - Construindo Testes – 44
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.10.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertLess()
local n1 := 10 as numeric
local n2 := 11 as numeric
local n3 := 10 as numeric
assertLess( n1, n2 ) // Ok
assertLess( n2, n1 ) // Erro
assertLess( n1, n3 ) // Erro
return .T.
7.4.10.6 Abrangência
01.02.10
7.4.11 assertLessOrEqual
Verifica se o resultado do teste é MENOR OU IGUAL ao de um valor esperado.
7.4.11.1 Sintaxe
5 - Construindo Testes – 45
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.11.2 Parâmetros
7.4.11.3 Retorno
7.4.11.4 Observações
• Caso o assertLessOrEqual() for chamado sem que tenha o PROBAT em execução, os valores gerados serão
somente exibidos no console.log da aplicação.
7.4.11.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertLessOrEqual()
local n1 := 10 as numeric
local n2 := 11 as numeric
local n3 := 10 as numeric
assertLessOrEqual( n1, n2 ) // Ok
assertLessOrEqual( n2, n1 ) // Erro
assertLessOrEqual( n1, n3 ) // Ok
return .T.
5 - Construindo Testes – 46
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.11.6 Abrangência
01.02.10
7.4.12 assertIsRegExFull
Verifica se o valor produzido pelo teste coincide em sua totalidade com a expressão regular informada.
7.4.12.1 Sintaxe
7.4.12.2 Parâmetros
7.4.12.3 Retorno
5 - Construindo Testes – 47
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.12.4 Observações
• Caso o assertIsRegExFull() for chamado sem que tenha o PROBAT em execução, os valores gerados serão
somente exibidos no console.log da aplicação.
7.4.12.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertIsRegExFull()
return .T.
7.4.12.6 Abrangência
01.02.10
7.4.13 assertIsRegExPartial
Verifica se o valor produzido pelo teste coincide em parte com a expressão regular.
7.4.13.1 Sintaxe
5 - Construindo Testes – 48
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.13.2 Parâmetros
7.4.13.3 Retorno
7.4.13.4 Observações
• Caso o assertIsRegExPartial() for chamado sem que tenha o PROBAT em execução, os valores gerados serão
somente exibidos no console.log da aplicação.
7.4.13.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertIsRegExPartial()
return .T.
5 - Construindo Testes – 49
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.13.6 Abrangência
01.02.10
7.4.14 assertIsContained
Verifica se o valor produzido (string) pelo teste contém uma string determinada.
7.4.14.1 Sintaxe
7.4.14.2 Parâmetros
7.4.14.3 Retorno
7.4.14.4 Observações
• Caso o assertIsContained() for chamado sem que tenha o PROBAT em execução, os valores gerados serão
somente exibidos no console.log da aplicação.
5 - Construindo Testes – 50
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.14.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertIsContained()
return .T.
7.4.14.6 Abrangência
01.02.10
7.4.15 assertJson
Verifica se o resultado do teste em Json é IGUAL ao de um json esperado.
7.4.15.1 Sintaxe
5 - Construindo Testes – 51
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.15.2 Parâmetros
7.4.15.3 Retorno
7.4.15.4 Observações
• Caso o assertJson() for chamado sem que tenha o PROBAT em execução, os valores gerados serão somente
exibidos no console.log da aplicação.
7.4.15.5 Exemplos
# include "tlpp-core.th"
# include "tlpp-probat.th"
@TestFixture()
function sample_assertJson()
cJson1 := '{"key":"value"}'
cJson2 := cJson1
cJson3 := '{"key":"value_1"}'
5 - Construindo Testes – 52
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
oJson1 := JsonObject():New()
oJson1:fromJson( cJson1 )
oJson2 := JsonObject():New()
oJson2:fromJson( cJson2 )
oJson3 := JsonObject():New()
oJson3:fromJson( cJson3 )
return .T.
7.4.15.6 Abrangência
01.02.10
7.4.16 assertNil
Verifica se o resultado do teste é Nil (Nulo).
7.4.16.1 Sintaxe
7.4.16.2 Parâmetros
5 - Construindo Testes – 53
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.16.3 Retorno
7.4.16.4 Observações
• Caso o assertNil() for chamado sem que tenha o PROBAT em execução, os valores gerados serão somente
exibidos no console.log da aplicação.
7.4.16.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertNil()
local u1
local n2 := 11 as numeric
local c3 := 'abc' as character
assertNil( u1 ) // Ok
assertNil( n2 ) // Erro
assertNil( c3 ) // Erro
return .T.
7.4.16.6 Abrangência
01.02.10
7.4.17 assertNull
Verifica se o resultado do teste é Nil (Nulo).
5 - Construindo Testes – 54
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.17.1 Sintaxe
7.4.17.2 Parâmetros
7.4.17.3 Retorno
7.4.17.4 Observações
• Caso o assertNull() for chamado sem que tenha o PROBAT em execução, os valores gerados serão somente
exibidos no console.log da aplicação.
7.4.17.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertNull()
5 - Construindo Testes – 55
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
local u1
local n2 := 11 as numeric
local c3 := 'abc' as character
assertNull( u1 ) // Ok
assertNull( n2 ) // Erro
assertNull( c3 ) // Erro
return .T.
7.4.17.6 Abrangência
01.02.10
7.4.18 assertVector
Verifica se o resultado do teste é um Vetor (array) IGUAL ao de um Vetor esperado.
7.4.18.1 Sintaxe
7.4.18.2 Parâmetros
5 - Construindo Testes – 56
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.4.18.3 Retorno
7.4.18.4 Observações
• O assertVector() somente compara vetores. Ele não é capaz de comparar array multidimensionais.
• Caso o assertVector() for chamado sem que tenha o PROBAT em execução, os valores gerados serão
somente exibidos no console.log da aplicação.
7.4.18.5 Exemplos
#include "tlpp-probat.th"
@TestFixture()
function sample_assertVector()
assertVector( a1, a2 ) // Ok
assertVector( a1, a3 ) // Erro
return .T.
7.4.18.6 Abrangência
01.02.10
5 - Construindo Testes – 57
TOTVSTEC – PROBAT
7.5.1.1 SUITE
A propriedade "suite" indica para qual suite o teste pertence, porém caso não seja informado através da
annotation, o PROBAT adiciona o teste para o SUITE ALL.
Caso queira adicionar a outro suite, é preciso informar explicitamente essa propriedade.
character "all"
Exemplos
5 - Construindo Testes – 58
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.5.1.2 OWNER
A propriedade "owner" indica quem é o "proprietário" do teste.
Sem informar, ele grava como Owner = "Unknown"
character "unknown"
Exemplo:
@TestFixture(owner="tlpp")
7.5.1.3 THREAD
Indica se no momento da execução do teste o PROBAT irá abrir uma Thread exclusiva para que o teste seja
executado.
character "yes"
Exemplos
Abre Thread:
@TestFixture() // Como "yes" é o valor default, não há necessidade de informá-lo
ou
@TestFixture(thread="yes")
5 - Construindo Testes – 59
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.5.1.4 PRIORITY
Modifica a prioridade na execução dos testes, permitindo que o desenvolvedor possa indicar a ordem de execução
conforme suas necessidades.
numeric 100
Exemplos
Prioridade ALTA:
@TestFixture(priority=0)
Prioridade BAIXA:
@TestFixture(priority=999)
Saiba mais sobre ordem de execução dos testes em [Ordem e Prioridade(see page 63)]
7.5.1.5 FOLDER
A propriedade "folder" indica o diretório onde se encontra fisicamente o teste.
character ""
Porém, essa informação é facultativa pois o folder pode ser detectado automaticamente caso esteja utilizando
boas práticas de desenvolvimento através de namespaces, como o exemplo abaixo:
/test/date test.date
Caso você não queria utilizar namespaces em seu projeto, você pode contornar essa detecção automática
informando explicitamente o diretório de seu teste, conforme abaixo:
5 - Construindo Testes – 60
TOTVSTEC – PROBAT
@TestFixture(folder="/test/date")
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.5.1.6 TEST
A propriedade "test" se refere ao nome do teste, por boas práticas o relacionamos à funcionalidade a ser testada.
character ""
Porém, essa informação é facultativa pois o nome pode ser extraído automaticamente do nome da classe e/ou
função de teste.
Por exemplo, ao criarmos o teste para a classe LOGS, criaríamos então um arquivo fonte de teste com o nome:
test_LOGS.
Nesse caso, o PROBAT irá extrair o nome como: "LOGS"
Porém, caso queria dar um nome diferente do extraído automaticamente, pode-se utilizar a propriedade "test".
Exemplo:
@TestFixture(test='logs_customizados')
class test_LOGS
7.5.1.7 DESCRIPTION
Informa uma descrição para o Teste caso haja a necessidade.
character ""
Exemplo:
@TestFixture(description="coloque aqui seu texto explicando o teste")
7.5.1.8 TARGET
Informa qual o "alvo" do teste, na qual foi informado pelo Cross-Validation.
5 - Construindo Testes – 61
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
character ""
Exemplo:
@TestFixture(target="item.1")
logical .T.
Exemplos
5 - Construindo Testes – 62
TOTVSTEC – PROBAT
Porém, pode ser que um recurso ou outro não possa ser executado com o uso de StartJob() do appserver, então
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
nesse caso o desenvolvedor tem a possibilidade de informar ao PROBAT de que deseja que o teste seja executado
na mesma Thread do motor de testes.
Contudo há um risco envolvido nesse processo, pois se houver um error.log no teste e não for possível a captura do
erro, todo a execução do PROBAT será interrompida pois a Thread principal será derrubada.
Por isso demos esse controle nas mãos do desenvolvedor, pois ele determina através de uma propriedade da
annotation [TestFixture] conforme necessidade e tem controle dos riscos.
Veja os exemplos abaixo.
Todos os testes marcados com [thread="no"] serão somente executados ao final de todos os demais testes,
justamente para diminuir os riscos já citados acima.
7.5.3.1 1 - Prioridade
Esse recurso especificamente é usado somente para mudar a ordem de execução dos testes, e é muito simples
usar.
Os valores informados em [TestFixture >> Priority] devem ser:
• Ser do tipo [numeric].
• Estar entre 0 e 999, ou seja, até 3 dígitos.
5 - Construindo Testes – 63
TOTVSTEC – PROBAT
@TestFixture()
user function teste_1()
@TestFixture()
user function teste_2()
@TestFixture()
user function teste_3()
Nesse caso, como todos os testes possuem a mesma prioridade (100 é o valor default), serão executados na
seguinte ordem:
1o. - teste_1()
2o. - teste_2()
3o. - teste_3()
Agora, vamos aplicar a prioridade e vejamos o que acontece:
@TestFixture()
user function teste_1()
@TestFixture(priority=999)
user function teste_2()
@TestFixture(priority=1)
user function teste_3()
Teremos então a seguinte ordem:
1o. - teste_3()
2o. - teste_1()
3o. - teste_2()
7.5.3.2 2 - Thread
Embora esse recurso não tem a finalidade de organizar a ordem de execução dos testes, na prática acaba alterando
pois todos os testes "marcados" para não abrir uma Thread destacada serão executados ao final para amenizar o
risco de ocorrer um error.log e derrubar as demais execuções.
Portanto, não é aconselhado usar esse recurso para manipular a ordem, mas é bom saber que os testes com
@TestFixture[thread="no"] sejam lançadas ao final de todos os testes.
Saiba mais sobre esse recurso em (Execução em thread(see page 62)).
5 - Construindo Testes – 64
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Usando função:
@TestFixture()
@Skip()
user function test_sample_skip()
...
Usando classe:
@TestFixture()
@Skip()
public method test_sample_skip()
...
5 - Construindo Testes – 65
TOTVSTEC – PROBAT
O "pulo" ficará condicionado a somente ao próximo assert que for executado, sendo assim, o assert posterior será
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
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.
5 - Construindo Testes – 66
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Sistema Operacional:
@Skip()
Versão tlppCore:
@Skip()
5 - Construindo Testes – 67
TOTVSTEC – PROBAT
// 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()
5 - Construindo Testes – 68
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Nome appserver:
@Skip()
IMPORTANTE
É possível juntar mais de uma opção no mesmo SKIP.
Exemplos:
5 - Construindo Testes – 69
TOTVSTEC – PROBAT
Todos os testes escritos para o PROBAT devem pertencer a uma suíte de testes, sendo assim, o desenvolvedor
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
pode informar explicitamente qual suíte ele pertence ou, não informar nada e manter o valor default, ou seja, a
suíte "ALL" (todos).
Exemplo:
@TestFixture()
user function test_sample_suite()
...
return .T.
@TestFixture( suite='sistemico' )
5 - Construindo Testes – 70
TOTVSTEC – PROBAT
Sugerimos criar um código fonte somente para essas configurações que o PROBAT permite, portanto, sugerimos:
test_config.tlpp
E agora, dentro dele coloque a seguinte instrução:
#include 'tlpp-probat.th'
SUITE sistemico EXCLUSIVE
5 - Construindo Testes – 71
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
7.5.6.2 Recursos
Ao ativar, podemos ter acesso aos seguintes recursos:
• Consolidação de Resultados(see page 72)
• Persistência em SQLite
• Valores sintéticos e analíticos
• Exportação(see page 74)
• XML
• JSON
• Validação(see page 77)
• Percentual mínimo de cobertura
• Filtro por módulo
• Modificando % por fonte
• Extensão VsCode(see page 75)
• Visualização Cobertura por fonte
Tabelas no SQLite
Possuímos 3 (três) tabelas contendo dados de cobertura dos fontes.
PROBAT_CODECOVERAGE_TOTAL
5 - Construindo Testes – 72
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
PROBAT_CODECOVERAGE_SOURCES
PROBAT_CODECOVERAGE_LINES
5 - Construindo Testes – 73
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Conclusão
Como podemos observar, temos informações com diversos espectros para análise da Cobertura de Código de
nosso projeto, portanto:
Considerando a tabela PROBAT_CODECOVERAGE_TOTAL, conseguimos ter uma visão sintética da Cobertura de
forma geral, obtendo os percentuais: Total (todos os fontes), Total por Fontes Oficiais e Total por Fontes de testes,
nos possibilitando tomar algumas decisões automatizadas.
Ao olhar para a tabela PROBAT_CODECOVERAGE_SOURCES, temos uma visão intermediária entre a sintética e a
analítica, nos possibilitando enxergar a cobertura de código por cada fonte de nosso projeto, seja ele oficial ou de
teste.
Agora, quando olhamos para a tabela PROBAT_CODECOVERAGE_LINES temos a visão analítica de cada fonte, nos
dando a possibilidade de saber linha a linha de todos os nossos fontes, se foram ou não executadas. Assim,
podemos melhorar nossos fontes oficiais e também os testes para aumentar a qualidade e/ou cobertura, ou
descobrir implementações dos fontes oficiais que são desnecessárias ou inalcançáveis.
7.5.6.4 Exportação
Os resultados de cobertura de código apurada podem ser exportadas de duas maneiras:
• XML no formato COBERTURA;
• JSON para uso pela extensão do VsCode.
XML
O XML pode ser usado por qualquer ferramenta de mercado que entenda o formato padronizado pelo projeto
COBERTURA. Veja mais em (https://cobertura.github.io/cobertura/).
Para solicitar a exportação no formato COBERTURA, é simples, basta seguir a configuração no INI abaixo:
[PROBAT]
CODECOVERAGE=1
CODECOVERAGE_EXPORT_TFS=1
O valor da chave [CODECOVERAGE_EXPORT_TFS] devem ser (0=não exporta) ou (1=exporta)
5 - Construindo Testes – 74
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
JSON
Essa exportação será usada para a extensão do VsCode, pois com base nela o VsCode irá mostrar visualmente a
cobertura no fonte aberto.
Nota: A extensão está em desenvolvimento e em breve disponibilizaremos oficialmente para uso.
Porém, esse formato pode ser usado além do VsCode, pois json é um formato amplamente conhecido e de fácil
utilização por qualquer ferramenta de mercado.
Para solicitar a exportação no formato JSON, é simples, basta seguir a configuração no INI abaixo:
[PROBAT]
CODECOVERAGE=1
CODECOVERAGE_EXPORT_JSON=1
O valor da chave [CODECOVERAGE_EXPORT_JSON] devem ser (0=não exporta) ou (1=exporta)
Download
A extensão ainda não foi lançada oficialmente na loja da VsCode, porém é possível obtê-la baixando o arquivo de
instalação (VSIX) através do link abaixo.
Versão Arquivo
v0.0.2 probat-0.0.2.vsix14
Instalando
Após obter o arquivo .vsix do PROBAT, recomendamos seguir a documentação oficial do VsCode com os passos
para a instalação da extensão.
Acesse a página: https://code.visualstudio.com/docs/editor/extension-marketplace#_install-from-a-vsix
Configurando
Como dito anteriormente, temos que informar ao VsCode onde encontrar o arquivo JSON gerado pelo PROBAT
com as informações de Cobertura.
1 - Tecle [Ctrl + ,] para acessar a tela de configuração do VsCode;
2 - Selecione as configurações da [Workspace];
3 - Vá em [Extensions];
14 https://tdn.totvs.com/download/attachments/687762745/probat-0.0.2.vsix?api=v2&modificationDate=1653421556713&version=1
5 - Construindo Testes – 75
TOTVSTEC – PROBAT
Visualizando a Cobertura
Após a configuração, agora é possível visualizar a cobertura sobre seus código, desde que a informação tenha sido
gerada no arquivo JSON.
Pra isso, siga os passos:
1 - Abra o arquivo que deseja visualizar a Cobertura;
2 - Após abrir, digite: [Ctrl + Shift + P ] para abrir a caixa de comandos;
3 - Digite: [PROBAT - Show Code Coverage];
OK
Caso tudo esteja OK, a extensão irá decorar seu fonte com cores distintas e teremos algo como:
Sendo:
• Linhas Cobertas: Cor Verde
• Linhas NÃO Cobertas: Cor Vermelha
• Linhas não debugáveis: sem decoração, nada muda.
Erro
Caso o fonte não tenha sido decorado com a cobertura veja nos logs do VsCode, aba OUTPUT opção probat, algo
como:
[probat] [coverage] start show ....
[probat] [coverage] [ERROR] arquivo inexistente ou inválido!
[probat] [coverage] end show ....
Nesse exemplo, o arquivo informado na configuração não foi encontrado ou possui formato incorreto.
5 - Construindo Testes – 76
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Informações importantes
BUG
Por vezes, após uso contínuo da visualização em tela da cobertura de código de um ou mais fonte, pode ocasionar
um comportamento inadequado de ao acionar a rotina "Show Coverage" a cobertura em tela ocorrer em linhas
erradas.
Para resolver esse comportamento, basta reiniciar o VsCode e ligar novamente o "Show Coverage".
Já existe um chamado [DTTLPP-2097] para correção desse comportamento.
5 - Construindo Testes – 77
TOTVSTEC – PROBAT
#include 'tlpp-probat.th'
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Filtro de módulos
É possível indicar ao PROBAT quais módulos (folder e sub-folders) devem ser validados pelo percentual indicado,
caso não seja informado esse filtro a validação será aplicada a todos os fontes.
Bom, pode parecer um recurso inútil à primeira vista mas imagine um projeto grande de desenvolvimento onde já
existam módulos maduros e que podem ir para a produção ou serem publicados, e ao contrário, módulos ainda em
desenvolvimento e que ainda não estejam alinhados com a qualidade exigida e portanto não faz sentido quebrar
toda uma expedição por módulos ainda em processo de amadurecimento.
Para informar quais módulos devem ser validados, é simples, basta seguir a configuração no INI abaixo:
[PROBAT]
CODECOVERAGE=1
CODECOVERAGE_FILTER_SRC=pasta_1,pasta_2,pasta_3
Os nomes das pastas (módulos) devem ser separadas por vírgula.
No exemplo acima, a validação de cobertura de código somente será aplicada aos fontes que pertençam
hierarquicamente aos diretórios [pasta_1], [,pasta_2] e [pasta_3].
#include "tlpp-core.th"
#include "tlpp-probat.th"
@TestFixture()
5 - Construindo Testes – 78
TOTVSTEC – PROBAT
class sample_class_test_errorLog
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
private data cVar
public method new() constructor
@Test('causa propositalmente erro de tipo de dados')
@ErrorLog('type mismatch')
public method run1()
endclass
method new class sample_class_test_errorLog
cVar := 'abc'
return self
method run1 class sample_class_test_errorLog
if ( ::cVar == .T. )
endif
return
ou
#include "tlpp-probat.th"
@TestFixture()
@ErrorLog('type mismatch')
user function sample_function_test_errorLog()
local cVar := 'abc'
if ( cVar == .T. )
endif
return
Neste exemplo, o if falhará pois é realizado a comparação de uma variável do tipo string com um valor booleano.
Porém, como foi utilizado a annotation [ErrorLog] na definição do Teste e com a indicação de "type mismatch", o
resultado do teste será verdadeiro.
Porém, se na definição do erro tivesse qualquer outra descrição que não fosse o error.log causado, mesmo fazendo
uso de [ErrorLog] o resultado será negativo, pois não é exatamente o erro esperado.
Nota: Em caso de não utilização desta annotation, será gerada uma falha no XML com o error log encontrado
durante a execução da thread.
5 - Construindo Testes – 79
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
[PROBAT]
CROSS_VALIDATION=ListCross
function ListCross()
local aRet := { 'item.1', 'item.2' }
return aRet
Nesse exemplo utilizamos nomes genéricos para deixar claro de que essa lista pode ser referente a qualquer
controle que a equipe de desenvolvimento desejar.
Exemplos de listas:
• Fontes;
• Funções;
• Classes;
• Módulos;
• Recursos;
• Libs;
• etc ...
Ao determinar essa lista, agora seu projeto terá a obrigação de possuir pelo menos 1 teste para cada item.
Caso não exista um teste específico para cada "alvo" da lista, o PROBAT irá gerar erro no processo de apuração de
resultados.
Portanto, agora temos que escrever o teste, porém devemos marcar o teste com seu respectivo "alvo", caso
contrário não haverá como fazer o link entre o "alvo" e o teste.
#include "tlpp-probat.th"
@TestFixture(target="item.1")
function test_sample_1()
O exemplo acima está "linkando" o teste com o "item.1" da lista. Porém, ainda não temos teste "linkando" com o
"item.2", portanto, caso executarmos o **PROBAT** com esse cenário, teremos um erro registrado.
Logo, após a execução, no processo de apuração do resultado e geração do arquivo de exportação, teremos então
algo como:
5 - Construindo Testes – 80
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Para eliminar esse problema nesse exemplo, teremos então que escrever um teste com o [target] para o "item.2".
5 - Construindo Testes – 81
TOTVSTEC – PROBAT
8 6 - Executando Testes
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
6 - Executando Testes – 82
TOTVSTEC – PROBAT
Caso fontes sejam compilados e não seja solicitada nova descoberta, o PROBAT sequer saberá da existência desses
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
tlpp.probat.discovery()
/tlpp/probat/discovery
Json Retorno:
{ "sucess": yes|no, "message": "" }
8.1.2 Na Execução
Ao indicar que a descoberta deve sempre ocorrer ao executar, quando solicitado a execução
por tlpp.probat.run() o PROBAT irá sempre procurar por fontes de testes compilados, exceto quando a execução
ocorrer dentro de um intervalo de tempo configurável pela chave abaixo:
[PROBAT]
TESTS_DISCOVERY_TIME_INTERVAL=3600
O Valor deve ser numérico e é em segundos.
6 - Executando Testes – 83
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
tlpp.probat.run('type:all')
ou simplesmente:
tlpp.probat.run()
tlpp.probat.run('type:namespace','string')
tlpp.probat.run('type:namespace','date','math')
Namespace longa:
tlpp.probat.run('type:namespace','test.unit.module')
6 - Executando Testes – 84
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
tlpp.probat.run('type:source','test_maximum.tlpp')
tlpp.probat.run('type:source','test_maximum.tlpp','test_minimum.tlpp')
tlpp.probat.run('type:error')
ou
tlpp.probat.run('type:fail')
Esse modo de execução só será possível quando existir no histórico do PROBAT alguma execução em modo ALL e
que possua erros, caso contrário ele não encontrará testes elegíveis para execução.
tlpp.probat.run('type:suite','sistemico')
6 - Executando Testes – 85
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
8.3.2.1 Importante:
Vale ressaltar que os modos apresentados acima terão prioridade sobre a configuração do INI, ou seja, se no INI
estiver ligado o coverage, porém usaram 'coverage:off' no parâmetro da RUN, o Coverage será desligado em tempo
de execução e a chave INI será ignorada.
6 - Executando Testes – 86
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
6 - Executando Testes – 87
TOTVSTEC – PROBAT
9 7 - Analisando Resultados
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
O PROBAT possui algumas formas para se obter os resultados dos testes, abaixo veremos cada um de forma
detalhada.
[PROBAT]
EXPORT_AFTER_RUN=1
EXPORT_FILE_NAME=results
EXPORT_FORMAT=JUnit
9.1.1 EXPORT_AFTER_RUN
Indica se ao final da execução gera o resultado automaticamente ou não, sendo:
0 = Não gera arquivo.
1 = Gera arquivo com resultado, baseado em EXPORT_FILE_NAME e EXPORT_FORMAT.
Caso opte pela geração automática, o arquivo será gerado na pasta ROOT/SYSTEM do appserver com o nome
definido em [EXPORT_FILE_NAME] e com o formato definido em [EXPORT_FORMAT].
Quando exportado logo após a execução dos testes serão exportados apenas os resultados da última execução dos
Testes.
Porém, caso a escolha opte por não gerar automaticamente, para gerar a exportação é preciso utilizar a Main
Function:
tlpp.probat.export()
Veja mais sobre esse recurso em: ( export()(see page 90) )
9.1.2 EXPORT_FORMAT
Até o momento temos somente implementado o formato jUnit, portanto a chave precisa ser:
[EXPORT_FORMAT=JUnit]
Portanto ao exportar o arquivo, o arquivo XML gerado será no formato jUnit e seu conteúdo será parecido com:
<?xml version="1.0"?>
<testsuites id="20190109203113" name="results" type="all" tests="1" skipped="0"
7 - Analisando Resultados – 88
TOTVSTEC – PROBAT
9.1.3 EXPORT_FILE_NAME
O nome do arquivo pode ser customizado, basta informar o nome desejado por uma chave do INI de seu appserver.
Exemplo 1:
[TLPP_ENGINE_TESTS]
FILE_NAME_EXPORT=
Irá manter o nome padrão da engine, ou seja, "results" para resultados e "coverage" para cobertura de código.
Ficando:
results.xml -> Resultados em formato jUnit
coverage.json -> Json de cobertura de código para uso no VsCode
coverage.xml -> XML com dados da cobertura de código
Exemplo 2:
[TLPP_ENGINE_TESTS]
FILE_NAME_EXPORT=customname
Gerará então:
customname.xml -> Resultados em formato jUnit
customname.json -> Json de cobertura de código para uso no VsCode
customname (1).xml -> XML com dados da cobertura de código
Note que dessa forma, existirá conflitos com arquivos com a mesma extensão e exigirá uma experiência maior do
operador para saber a finalidade de cada arquivo.
Exemplo 3:
[TLPP_ENGINE_TESTS]
FILE_NAME_EXPORT=*customname
Gerará então:
7 - Analisando Resultados – 89
TOTVSTEC – PROBAT
unit-customname.xml
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
coverage-customname.json
coverage-customname.xml
Exemplo 4:
[TLPP_ENGINE_TESTS]
FILE_NAME_EXPORT=customname*
Gerará então:
customname-unit.xml
customname-coverage.json
customname-coverage.xml
9.2 b - tlpp.probat.export()
É possível solicitar a exportação sempre que desejar, e para isso é preciso fazer uso da Main Function:
tlpp.probat.export()
Como parâmetro, devemos informar o tipo de códigos para busca das execuções e claro, a lista de códigos
desejados:
Os tipos disponíveis para uso são:
(*1) - Para obter um código de execução, utilize o retorno das funções RUN do PROBAT.
(*2) - Veja informações detalhadas em: (Identificador Customizado)
Exemplos:
7 - Analisando Resultados – 90
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
9.3 c - Warning
Ao utilizar o tlpp.probat.assertWarning(), o motor registrará a mensagem de aviso solicitada porém não irá gerar
resultado, nem positivo e nem negativo.
Exemplo:
tlpp.probat.assertWarning( 'Desc: Gera mensagem de aviso, mas nao gera resultados nem positivo, nem
negativo' )
<?xml version="1.0"?>
<warnings name="tlppCore_tests_warning" date="12/17/21" time="13:52:01" >
<exec code="20211217135200" >
<warning id="1" call_source="TEST_SAMPLE_ASSERTS.TLPP" call_line="30" >
Desc: Gera mensagem de aviso, mas nao gera resultados nem positivo, nem negativo
</warning>
</exec>
</warnings>
9.4 d - SQLite
Todas as execuções de testes são armazenados em um SQLite, dessa forma, é possível comparar e consultar
resultados antigos caso seja necessário alguma análise retroativa.
Vamos à tabelas disponíveis com dados dos resultados:
9.4.1 Testes
7 - Analisando Resultados – 91
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
9.4.1.1 [PROBAT_TEST_EXECUTION]
Tabela principal da execução dos testes contendo dados principais.
9.4.1.2 [PROBAT_TEST_RESULTS]
Resultados totalizados entre todos os testes, agrupados conforme parâmetros enviados à função de entrada.
7 - Analisando Resultados – 92
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
9.4.1.3 [PROBAT_TEST_TESTS]
Resultado de cada registro de teste, gerado por cada assert executado.
7 - Analisando Resultados – 93
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
OK N Resultado ( 0 = Erro
9.4.1.4 [PROBAT_TEST_ERRORS]
Tabela contendo todas as mensagems de erros capturas pelo PROBAT
SOURCE C Fonte
7 - Analisando Resultados – 94
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
9.4.1.5 [PROBAT_TEST_WARNING]
Tabela contendo todas as mensagens de aviso geradas pelo assertWarning().
9.4.2.1 [PROBAT_CODECOVERAGE_TOTAL]
Percentual Total de cobertura sumarizado por todos os fontes
7 - Analisando Resultados – 95
TOTVSTEC – PROBAT
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
9.4.2.2 [PROBAT_CODECOVERAGE_SOURCES]
Percentual Total de cobertura por fonte
9.4.2.3 [PROBAT_CODECOVERAGE_LINES]
Informação linha a linha por fonte sobre a cobertura
7 - Analisando Resultados – 96
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Campo
CHANGE
COVERAGE
C
N
Tipo Dado
Descrição
Debugável
7 - Analisando Resultados – 97
TOTVSTEC – PROBAT
TOTVSTEC – PROBAT
O PROBAT procura no RPO por classes e funções que utilizam por determinadas annotations para a execução dos
testes.
No exemplo usado com a implementação básica de um teste com classe, tivemos a utilização de duas annotations,
são elas:
[TestFixture]
[Test]
Abaixo vamos resumir como a mágica acontece!
Portanto, detalharemos através dos passos de A a G.
10.1 [A]
Veja o trecho de nosso exemplo:
#include "tlpp-core.th"
#include "tlpp-probat.th"
@TestFixture()
class test_sample
10.2 [B]
Veja esse outro trecho do mesmo exemplo:
15 http://tlpp-probat.th/
10.3 [C]
Outro ponto importante para a correta configuração, é utilizar o recurso de namespace.
Veja o trecho:
namespace test.unit.sample
10.4 [D]
Uma obrigatoriedade é o uso de duas includes, são elas:
#include "tlpp-core.th"
#include "tlpp-probat.th"
• A include [tlpp-core.th] só é obrigada nesse exemplo pois escrevemos o teste com classe, pois caso
tivéssemos criado o teste com função não precisaríamos.
• A obrigatoriedade da include [tlpp-probat.th] será para todos os testes, pois é nela que se encontram as
definições das annotations, comandos e instruções usadas pelo PROBAT.
10.5 [E]
Por último e não menos importante, para que o teste seja registrado pela PROBAT na execução é preciso fazer uso
de alguma função assert() dentro do método ou função de teste, veja o trecho:
Porém, para que o assert funcione corretamente, é preciso realizar o "import" do namespace da PROBAT em seu
fonte de teste, pois essa função é de uso exclusivo do tlppCore.
Após seguir todos os passos acima, basta compilar seu código-fonte de teste para que seja possível executá-lo.
10.6 [F]
Para executar seus testes, basta fazer uso da Main Function disponibilizada pelo PROBAT, assim pode-se executá-
la:
• Através de algum código-fonte;
• Diretamente pela execução do VsCode;
• Linha de comando do Sistema Operacional através do appserver.
Exemplos:
10.6.2 2 - VsCode
Ao pressionar Crtl + F5 ou F5 em seu VsCode, informe o seguinte na caixa de diálogo aberta:
tlpp.probat.run
10.7 [G]
Resumidamente o PROBAT irá obter as funções ou classes de testes através das annotations:
• TestFixture
• Test
Grava as funções no SQLite para uso posterior ou logo em seguida, dependendo do modo escolhido de "discovery".
Ao executar, lê os nomes de funções e classes já descobertos e executa todos os testes que estejam dentro do
escopo pedido pela função RUN.
Através das funções de asserts existentes dentro dos fontes de testes, faz as comparações devidas conforme o valor
produzido pelo teste e o valor esperado e após grava no SQLite o resultado dessa operação.
Ao final, faz a exportação dos resultados em um arquivo no formato pedido.
11 9 - Exemplo no GitHub
You are using an UNLICENSED copy of Scroll PDF Exporter for Confluence. Do you find Scroll PDF Exporter useful? Consider purchasing it today: https://www.k15t.com/software/scroll-pdf-exporter
Disponibilizamos no GitHub da TOTVS um projeto com exemplos práticos e simples para facilitar o entendimento
sobre o PROBAT.
Sinta-se à vontade de baixar os fontes em:
https://github.com/totvs/tlpp-probat-samples.git