Beispiel 6: Testfall mit Struktur- und Arrayelementen
In diesem Beispiel wird ein Test für den Funktionsbaustein functionBlockWithArrayAndStruct aus dem folgenden ST-Code erstellt und ausgeführt.
TYPE
structA : STRUCT
ele1 : INT;
ele2 : INT;
END_STRUCT;
END_TYPE
FUNCTION_BLOCK functionBlockWithArrayAndStruct
VAR_INPUT
input_array : ARRAY [0..1] OF INT;
input_struct : structA;
END_VAR
VAR_OUTPUT
output_array : ARRAY [0..1] OF INT;
output_struct : structA;
END_VAR
output_array[0] := input_array[0] + 1;
output_array[1] := input_array[1] + 2;
output_struct.ele1 := input_struct.ele1 + 1;
output_struct.ele2 := input_struct.ele2 + 2;
END_FUNCTION_BLOCK
Dieses Beispiel enthält Eingänge und Ausgänge, die
auf einem
strukturierten Datentyp
oder
ARRAY-Datentyp
basieren. Dafür gilt diese Einschränkung:
Verhalten bei Struktur- und Arrayelementen
Für einen Eingang und Ausgang, der auf einem →strukturierter Datentyp oder →ARRAY-Datentyp basiert, ist nur eine Spalte vorhanden. Sie müssen den Spaltennamen erweitern, falls Sie ein Element davon ansprechen wollen. Lesen Sie unter "Zugriff auf strukturierten Datentyp und Strukturelemente" und "Zugriff auf ARRAY-Datentyp und ARRAY-Elemente" über die dafür benötigte Syntax nach.
Das bedeutet: Sie müssen selbst eine zusätzliche Spalte pro Struktur- oder Array-Element einfügen, das Sie im Testfall spezifizieren wollen. Für alle anderen Elemente geben Sie die Vorgaben im Arbeitsblatt Defaults an.
Beachten Sie, dass das Testframework nicht prüft, ob der Testfall jedes Element von solchen Eingangsvariablen enthält.
Die Vorgehensweise beim Test dieses Funktionsbausteins ist analog zu den vorigen Beispielen und wird in diesem Beispiel nicht erneut angeführt. Stattdessen konzentriert sich dieser Artikel auf die nötigen Aktionen für die Testsuite.
Die folgende Grafik zeigt das Arbeitsblatt für den Testfall nach der Erstellung der Testsuite (oben) und das angepasste Arbeitsblatt für den Testfall (unten):
Diese Daten habe sich geändert – mit Bezug auf die Testsuite (oben) :
Der Titel der Spalte B, C, D und E wurde erweitert, um das 1. Struktur- oder Array-Element im Testfall zu spezifizieren. Beispiel: input_array wurde zu input_array[0] und input_struct wurde zu input_struct.ele2 .
Die Spalte C, E, G und I wurde eingefügt, um das 2. Struktur- oder Array-Element im Testfall zu spezifizieren. Beispiel: input_array[1] und input_struct.ele2
Wie üblich, wurden im Arbeitsblatt für den Testfall auch die
Testsequenzen und Testdaten eingetragen
.
Da der Testfall alle Spalten für die
Struktur- und Array-Elemente
enthält, sind in diesem Beispiel keine Anpassungen im
Arbeitsblatt
Defaults erforderlich.
Wenn Sie diesen Testfall ausführen, zeigt die Konsole PASS als Ergebnis der Testausführung an.
Da der Testfall
Struktur- und Array-Elemente enthält wird b
ei der Ausführung eine Warnung angezeigt, dass das Testframework nicht prüft, ob der Testfall jedes Element für diese Eingabevariablen enthält. Diese Warnung können Sie für dieses Beispiel ignorieren.