Nei metodi degli oggetti ETEST sono disponibili macro specifiche, che possono essere usate per controllare l'esecuzione del test e determinare il risultato di un caso di test.
Le macro vengono richiamate come i metodi. A differenza di una chiamata di funzione, una chiamata di macro può scrivere variabili del metodo chiamante e far restituire un risultato al metodo chiamante.
È consentito l'uso delle macro nei seguenti metodi di casi di test e risorse:
Prepare
Execute
CleanUp
È inoltre possibile usare le macro nei metodi chiamati con ASSERT_SUBMETHOD
.
Finalize
.
Le macro in oggetti di altro tipo non hanno alcun effetto, come viene indicato da un messaggio riportato nella vista .
Nei metodi di casi di test e risorse, sono possibili le seguenti macro:
Chiamata di macro |
Descrizione |
---|---|
|
FALSE: l'esecuzione non è stata completata correttamente. TRUE: l'esecuzione è stata completata correttamente. |
|
FALSE: l'esecuzione non è stata completata correttamente. TRUE: l'esecuzione è stata completata correttamente.
|
|
FALSE: il risultato del test è inconcludente. Il risultato del test è inconcludente per indicare che un test non ha potuto essere eseguito. Il motivo potrebbe essere, ad esempio, un dispositivo hardware non disponibile sul sistema di test. TRUE: il test è stato completato correttamente. |
|
Con FALSE: è stato rilevato un errore durante la chiamata del metodo.
Un
Al contrario, un
Quando si usa il
|
|
Il test è stato completato correttamente (senza errori). Un semplice |
I metodi Prepare
, Execute
e CleanUp
di un caso di test o una risorsa vengono richiamati ciclicamente fino a quando un ASSERT
restituisce FALSE o fino a quando viene richiamato TEST_DONE
. Se viene richiamato TEST_DONE
o se un ASSERT
restituisce FALSE, l'esecuzione del metodo viene interrotta, annullando la parte restante.
Se... |
In questo caso... |
---|---|
l'esecuzione di un test viene terminata con |
il test è stato completato senza errori. |
un'asserzione nel metodo |
il caso di test non è stato completato correttamente. |
CleanUp
restituisce FALSE, l'esecuzione del test viene interrotta. Questa situazione viene categorizzata come errore durante l'inizializzazione o la deinizializzazione. Viene visualizzato un messaggio in Logic Builder che indica che il test è stato annullato ed è necessario un reset del controller.
Nel seguente esempio di codice di programma, le macro ASSERT
e TEST_DONE
vengono utilizzate nella parte di implementazione del metodo Execute
.
diResult := MyAdditionFunction(4, 3);
ASSERT(diResult = 7, 'MyAdditionFunction addition result not correct');
TEST_DONE();
Nel seguente esempio di codice di programma, le macro ASSERT
e TEST_DONE
vengono utilizzate per testare la funzione my_add
(una aggiunta semplice).
Nel caso di test è stato creato un metodo TestMyAdd
che viene richiamato più volte dal metodo Execute
del caso di test per testare la funzione my_add
in condizioni diverse e con parametri diversi.
(* Methode Execute *)
(* Declaration part*)
METHOD Execute : PD_ETest.ET_TestReturn
VAR_INPUT
i_xFirstCall : Bool;
i_ifErrorLogger : PD_ETest.IF_ErrorLogger;
END_VAR
VAR_OUTPUT
q_rProgress : REAL;
q_sState . STRING[255];
END_VAR
VAR
END_VAR
(* Implementation part*)
ASSERT_SUBMETHOD (TestMyAdd(12, 2, 14, i_ifErrorLogger));
ASSERT_SUBMETHOD (TestMyAdd(12, 3, 15, i_ifErrorLogger));
ASSERT_SUBMETHOD (TestMyAdd(12, 4, 16, i_ifErrorLogger));
TEST_DONE();
(* Submethod TestMyAdd *)
(* Declaration part *)
METHOD TestMyAdd : PD_ETest.ET_TestReturn
VAR_INPUT
i_a : INT;
i_b : INT;
i_result : INT;
i_ifErrorLogger : PD_ETest.IF_ErrorLogger;
END_VAR
VAR
iResult : INT;
END_VAR
(* Implementation part *)
iResult : my_add(i_a, i_b);
ASSERT(iresult = i_result);
(* Function my_add *)
(* Declaration part *)
FUNCTION my_add : INT
VAR_INPUT
a : INT;
b : INT;
END_VAR
VAR
END_VAR
(* Implementation part *)
iResult : my_add := a + b;