Histórico da Página
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
Bloco de código | ||
---|---|---|
| ||
[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:
Bloco de código | ||
---|---|---|
| ||
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:
Bloco de código |
---|
#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:
Bloco de código | ||
---|---|---|
| ||
<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> |
Para eliminar esse problema nesse exemplo, teremos então que escrever um teste com o [target] para o "item.2".