O "Cross Validation" tem a finalidade de dar ao projeto flexibilidade para validar se existem testes escritos para certos "alvos" conforme necessidade.
O primeiro passo a se fazer é informar ao PROBAT qual a função será responsável pela criação da lista, sendo assim, faremos da seguinte forma:
Arquivo appserver.ini
[PROBAT] CROSS_VALIDATION=ListCross
A seguir, devemos criar a função informada no INI seguindo alguns critérios:
- Deve retornar um array simples (vetor);
- Elementos do array devem ser strings;
- Array deve pelo menos ter 1 elemento;
- Função deve estar compilada no mesmo ambiente onde for executar o PROBAT.
Exemplo:
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.
Para marcar o teste, use a propriedade [target] da annotation [TestFixture], veja:
#include "tlpp-probat.th" @TestFixture(target="item.1") function test_sample_1()
Ao final, no processo de apuração do resultado e gerando o arquivo de exportação, teremos então algo como:
<testcase id="1" name="Element:item.1" time="0.000" description="" > developed test: test dev OK </testcase> <testcase id="2" name="Element:item.2" time="0.001" description="" > <failure type="Warning" message="validation error"> [ER0003] item.2: there is no test developed for this element in cross-validation </failure> </testcase>