Pular para o conteúdo principal

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.

Fora do PROBAT

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.

Igualdade e comparação

AssertVerifica
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

AssertVerifica
assertTrue( lValue )Lógico e .T.
assertFalse( lValue )Lógico e .F.
assertNil( xValue )Valor nulo (Nil)
assertEmpty( xValue )Valor vazioNil ou string vazia

Strings e regex

AssertVerifica
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

AssertVerifica
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:

AssertVerifica
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

AssertEfeito
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; assertWarning a partir do 01.02.12; assertHasErrorLog, assertNoHasErrorLog e assertEmpty a partir do 01.04.01.

Exemplos no GitHub

Fontes .tlpp de testes: Recursos básicos.