Asserts
Os asserts são o mecanismo que registra resultados no PROBAT — sem ao menos um assert executado, o teste não gera resultado. Eles vivem no namespace tlpp.probat: com using namespace tlpp.probat, chame direto (assertEquals(...)); sem o using, prefixe (tlpp.probat.assertEquals(...)).
Todos aceitam uma descrição opcional como último parâmetro — ela aparece nos resultados e facilita muito o diagnóstico.
Se um assert for chamado sem que o PROBAT esteja em execução, os valores são apenas exibidos no console.log da aplicação — nada é registrado.
Catálogo
Igualdade e comparação
| Assert | Verifica |
|---|---|
assertEquals( xValue, xExpected ) | Valores iguais |
assertNotEquals( xValue, xExpected ) | Valores diferentes |
assertGreater( xValue, xLess ) | xValue > xLess |
assertGreaterOrEqual( xValue, xLess ) | xValue >= xLess |
assertLess( xValue, xGreater ) | xValue < xGreater |
assertLessOrEqual( xValue, xGreater ) | xValue <= xGreater |
Lógicos, nulos e vazios
| Assert | Verifica |
|---|---|
assertTrue( lValue ) | Lógico e .T. |
assertFalse( lValue ) | Lógico e .F. |
assertNil( xValue ) | Valor nulo (Nil) |
assertEmpty( xValue ) | Valor vazio — Nil ou string vazia |
Strings e regex
| Assert | Verifica |
|---|---|
assertIsRegExFull( cValue, cPattern ) | String casa 100% com a regex |
assertIsRegExPartial( cValue, cPattern ) | String casa parcialmente com a regex |
assertIsContained( cValue, cExpected ) | Equivale a ( cExpected $ cValue ) — trecho contido na string |
Estruturas
| Assert | Verifica |
|---|---|
assertVector( aValue, aExpected ) | Arrays iguais em todos os elementos (aceita tipos mistos e Nil; não compara arrays multidimensionais) |
assertJson( jValue, xExpected ) | JSONs iguais — o esperado pode ser JsonObject ou string JSON |
Error log (macroexecução)
Recebem uma instrução (entre aspas) que é macroexecutada dentro de um Try...Catch:
| Assert | Verifica |
|---|---|
assertHasErrorLog( cInstruction, xExpectedError ) | A instrução gera error log com a descrição esperada |
assertNoHasErrorLog( cInstruction, xExpectedReturn ) | A instrução não gera error log (o 2º parâmetro é só registro; passe "" se não usar) |
@TestFixture()
Function u_sample_assertHasErrorLog()
assertHasErrorLog( "u_funcTemErro()", "variable does not exist NAOTEMLOCAL", "Variável inexistente" )
Return .T.
Complementam a annotation @ErrorLog — ver Error Log.
Resultados manuais
| Assert | Efeito |
|---|---|
assertOK( cMessage ) | Registra um resultado positivo deliberado (sempre retorna .T.) |
assertError( cError, [cDesc], [xValue] ) | Registra um resultado negativo deliberado (sempre retorna .F.) |
assertWarning( cWarning ) | Registra aviso — não conta como positivo nem negativo |
Os avisos do assertWarning vão para a tabela PROBAT_TEST_WARNING e, na exportação, geram um XML apartado ({nome_arquivo}_warning.xml) — ver Execução e resultados.
Exemplo completo
#include "tlpp-core.th"
#include "tlpp-probat.th"
namespace test.tlpp
using namespace tlpp.probat
#define _str_ 'str_test'
#define _num_ 100
#define _json_ '{"key":"value"}'
#define _arr_ {1,2,3,"4",Nil,6}
@TestFixture(owner='sample')
function U_test_sample_asserts()
local oJson1
local oJson2
assertEquals( _str_ , 'str_test' , 'Desc: valores devem ser iguais' )
assertNotEquals( _str_ , 'str_test_diff', 'Desc: valores devem ser diferentes' )
assertOK( 'Desc: Gera resultado positivo' )
assertWarning( 'Desc: Gera mensagem de aviso, mas nao gera resultados nem positivo, nem negativo' )
assertTrue( .T., "Desc: Compara se a variavel e logical e true" )
assertFalse( .F., "Desc: Compara se a variavel e logical e false" )
assertGreater( _num_, 99 , "Desc: Valor deve ser maior que o esperado" )
assertGreaterOrEqual( _num_, 100, "Desc: Valor deve ser maior ou igual que o esperado" )
assertLess( _num_, 101, "Desc: Valor deve ser menor que o esperado" )
assertLessOrEqual( _num_, 100, "Desc: Valor deve ser menor ou igual que o esperado" )
assertIsRegExFull( "So tem letras" , "[A-Za-z ]+", "Desc: Regex 100% exato" )
assertIsRegExPartial( "123 tem letras e numeros 456 tambem", "[A-Za-z ]+", "Desc: Regex parcialmente exato" )
assertIsContained( _str_, "_", "Desc: valor do teste deve conter o valor esperado (somente string)" )
assertNil( , "Desc: valor deve ser Nulo" )
assertVector( _arr_, {1,2,3,"4",Nil,6}, "Desc: os vetores devem ser iguais" )
oJson1 := JsonObject():New()
oJson1:fromJson( _json_ )
oJson2 := JsonObject():New()
oJson2:fromJson( _json_ )
assertJson( oJson1, oJson2, "Desc: Os dois objetos json devem ser iguais" )
assertJson( oJson1, _json_, "Desc: O objeto json deve ser igual a string json" )
return .T.
Documentação oficial: d - Asserts. Disponibilidade: a maioria a partir do tlppCore 01.02.10;
assertWarninga partir do 01.02.12;assertHasErrorLog,assertNoHasErrorLogeassertEmptya partir do 01.04.01.
totvs/tlpp-probat-samples — test/probat_resources/test_sample_asserts.tlpp
Exemplos no GitHub
Fontes .tlpp de testes: Recursos básicos.