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.
[A]
Veja o trecho de nosso exemplo:
#include "tlpp-core.th" #include "tlpp-probat.th" @TestFixture() class test_sample
A annotation [TestFixture] serve para marcar a classe ou função como um dispositivo de teste.
Somente através dessa marcação é que o PROBAT consegue descobrir quais são as classes ou funções específicas de testes.
Um ponto importante é que para fazer uso da annotation referida é preciso importar a include exclusiva do PROBAT fazendo a inserção da instrução logo no começo do fonte: [#include "tlpp-probat.th"]
[B]
Veja esse outro trecho do mesmo exemplo:
@Test('Sample test for the engine manual.') public method sampleTest()
Nesse trecho do código, marcamos o método sampleTest() como um método a ser executado durante os testes através da annotation [Test].
Importante ressaltar que a descrição do teste, feito através do primeiro parâmetro da annotation, é obrigatório pois ele passará por uma função que faz essa validação.
NOTA: Se você declarar uma classe com [TestFixture] e não tiver nenhum método com annotation [Test], seu teste começará a ser executado, porém gerará um resultado do tipo SKIPPED.
[C]
Outro ponto importante para a correta configuração, é utilizar o recurso de namespace.
Veja o trecho:
namespace test.unit.sample
Em nosso exemplo, utilizamos o nome do diretório onde se localiza a implementação do teste, ou seja, test/unit/sample.
Essa informação é importante para fácil localização física dos fontes de testes, afinal ele estará identificado como FOLDER, tando na gravação do SQLite como no XML gerado.
Exemplo:
<testcase id="1" name="Class:TEST.UNIT.SAMPLE.TEST_SAMPLE():New() | Method:SAMPLETEST()" time="0.002" description="Sample test for the engine manual." > Folder: TEST/UNIT/SAMPLE/ | Description: U_SAMPLE( cTest ) | Assert: TLPP.PROBAT.ASSERTEQUALS | Call From: TEST_SAMPLE.TLPP:57 | Expected: {C}-[test_1] | Result: {C}-[test_1] </testcase>
Outro modo de informar o FOLDER é através da propriedade da annotation, segue:
@Test('Sample test for the engine manual.',folder='test/unit/sample') public method sampleTest()
Nesse caso, o PROBAT irá priorizar o valor informado pela annotation.
[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.