In den Methoden der ETEST-Objekte sind spezifische Makros verfügbar. Sie können diese Makros zur Steuerung der Testausführung und Bestimmung des Ergebnisses eines Testfalls heranziehen.
Makros werden auf dieselbe Weise wie Methoden aufgerufen. Im Gegensatz zu einem Funktionsaufruf kann ein Makroaufruf in die Variablen der aufrufenden Methode schreiben und eine Rückkehr der aufrufenden Methode auslösen.
Makros sind in folgenden Methoden von Testfällen und Test-Ressourcen zulässig:
Prepare
Execute
CleanUp
Sie können Makros ebenfalls in Methoden verwenden, die über ASSERT_SUBMETHOD
aufgerufen werden.
Finalize
verwendet werden.
Makros in anderen Objekten haben keinerlei Wirkung. Das wird in einer Meldung in der Ansicht ausgewiesen.
In den Methoden von Testfällen und Test-Ressourcen können folgende Makros verwendet werden:
Aufgerufenes Makro |
Beschreibung |
---|---|
|
FALSE: Die Ausführung wurde nicht erfolgreich abgeschlossen. TRUE: Die Ausführung wurde erfolgreich abgeschlossen. |
|
FALSE: Die Ausführung wurde nicht erfolgreich abgeschlossen. TRUE: Die Ausführung wurde erfolgreich abgeschlossen.
Als Ergebnis wird die Diagnosemeldung |
|
FALSE: Das Testergebnis ist nicht eindeutig. Das Testergebnis ist nicht eindeutig, um darauf zu verweisen, dass ein Test nicht ausgeführt werden konnte. Die Ursache hierfür kann darauf zurückzuführen sein, dass ein für den Test erforderliches Hardwaregerät im Testsystem nicht zur Verfügung steht. TRUE: Die Testausführung wurde erfolgreich abgeschlossen. |
|
Über FALSE: Beim Aufrufen der Methode wurde eine Fehler erkannt.
Das Makro
Im Gegensatz dazu hat ein Makro
Bei Verwendung des Makros
|
|
Die Ausführung des Tests wurde erfolgreich (ohne Fehler) abgeschlossen. Ein einfaches |
Die Methoden Prepare
, Execute
und CleanUp
eines Testfalls oder einer Test-Ressource werden zyklische aufgerufen, bis ein ASSERT
-Makro als FALSE eingestuft oder ein TEST_DONE
-Makro aufgerufen wird. Beim Aufruf eines TEST_DONE
oder bei der Einstufung eines ASSERT
als FALSE wird die Ausführung der Methode angehalten und die restliche Ausführung verworfen.
Wenn... |
Dann... |
---|---|
die Ausführung eines Test mit |
wurde der Test erfolgreich abgeschlossen. |
eine Aussage in der Methode |
wurde der Testfall nicht erfolgreich abgeschlossen. |
CleanUp
als FALSE eingestuft wird, dann wird die Ausführung des Tests gestoppt. Das wird als Fehler bei der Initialisierung bzw. Deinitialisierung eingeordnet. In Logic Builder wird eine entsprechende Meldung angezeigt. Die Meldung verweist darauf, dass der Test abgebrochen wurde und die Steuerung zurückgesetzt werden muss.
Im folgenden Programmcodebeispiel werden die Makros ASSERT
und TEST_DONE
im Implementierungsteil der Methode Execute
verwendet.
diResult := MyAdditionFunction(4, 3);
ASSERT(diResult = 7, 'MyAdditionFunction addition result not correct');
TEST_DONE();
Im folgenden Programmcodebeispiel werden die Makros ASSERT
und TEST_DONE
für den Test der Funktion my_add
(einfach Addition) verwendet.
Im Testfall wurde eine Methode TestMyAdd
erstellt. Die Methode wird mehrmals von der Methode Execute
des Testfalls für den Test der Funktion my_add
unter verschiedenen Grenzbedingungen und mit unterschiedlichen Parametern aufgerufen.
(* 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;